+ }
+);
+ }
+
+ AccessibilityNodeProviderJellyBeanImpl()
+ {
+ }
+ }
+
+ static class AccessibilityNodeProviderStubImpl
+ implements AccessibilityNodeProviderImpl
+ {
+
+ public Object newAccessibilityNodeProviderBridge(AccessibilityNodeProviderCompat accessibilitynodeprovidercompat)
+ {
+ return null;
+ }
+
+ AccessibilityNodeProviderStubImpl()
+ {
+ }
+ }
+
+ static interface AccessibilityNodeProviderImpl
+ {
+
+ public abstract Object newAccessibilityNodeProviderBridge(AccessibilityNodeProviderCompat accessibilitynodeprovidercompat);
+ }
+
+
+ public AccessibilityNodeProviderCompat()
+ {
+ mProvider = IMPL.newAccessibilityNodeProviderBridge(this);
+ }
+
+ public AccessibilityNodeProviderCompat(Object obj)
+ {
+ mProvider = obj;
+ }
+
+ public AccessibilityNodeInfoCompat createAccessibilityNodeInfo(int i)
+ {
+ return null;
+ }
+
+ public List findAccessibilityNodeInfosByText(String s, int i)
+ {
+ return null;
+ }
+
+ public AccessibilityNodeInfoCompat findFocus(int i)
+ {
+ return null;
+ }
+
+ public Object getProvider()
+ {
+ return mProvider;
+ }
+
+ public boolean performAction(int i, int j, Bundle bundle)
+ {
+ return false;
+ }
+
+ private static final AccessibilityNodeProviderImpl IMPL;
+ private final Object mProvider;
+
+ static
+ {
+ if(android.os.Build.VERSION.SDK_INT >= 19)
+ IMPL = new AccessibilityNodeProviderKitKatImpl();
+ else
+ if(android.os.Build.VERSION.SDK_INT >= 16)
+ IMPL = new AccessibilityNodeProviderJellyBeanImpl();
+ else
+ IMPL = new AccessibilityNodeProviderStubImpl();
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/view/accessibility/AccessibilityNodeProviderCompatJellyBean.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/view/accessibility/AccessibilityNodeProviderCompatJellyBean.java
new file mode 100644
index 0000000..76b80e2
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/view/accessibility/AccessibilityNodeProviderCompatJellyBean.java
@@ -0,0 +1,58 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.view.accessibility;
+
+import android.os.Bundle;
+import android.view.accessibility.AccessibilityNodeInfo;
+import android.view.accessibility.AccessibilityNodeProvider;
+import java.util.List;
+
+class AccessibilityNodeProviderCompatJellyBean
+{
+ static interface AccessibilityNodeInfoBridge
+ {
+
+ public abstract Object createAccessibilityNodeInfo(int i);
+
+ public abstract List findAccessibilityNodeInfosByText(String s, int i);
+
+ public abstract boolean performAction(int i, int j, Bundle bundle);
+ }
+
+
+ AccessibilityNodeProviderCompatJellyBean()
+ {
+ }
+
+ public static Object newAccessibilityNodeProviderBridge(final AccessibilityNodeInfoBridge bridge)
+ {
+ return new AccessibilityNodeProvider() {
+
+ public AccessibilityNodeInfo createAccessibilityNodeInfo(int i)
+ {
+ return (AccessibilityNodeInfo)bridge.createAccessibilityNodeInfo(i);
+ }
+
+ public List findAccessibilityNodeInfosByText(String s, int i)
+ {
+ return bridge.findAccessibilityNodeInfosByText(s, i);
+ }
+
+ public boolean performAction(int i, int j, Bundle bundle)
+ {
+ return bridge.performAction(i, j, bundle);
+ }
+
+ final AccessibilityNodeInfoBridge val$bridge;
+
+
+ {
+ bridge = accessibilitynodeinfobridge;
+ super();
+ }
+ }
+;
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/view/accessibility/AccessibilityNodeProviderCompatKitKat.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/view/accessibility/AccessibilityNodeProviderCompatKitKat.java
new file mode 100644
index 0000000..1b2491a
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/view/accessibility/AccessibilityNodeProviderCompatKitKat.java
@@ -0,0 +1,65 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.view.accessibility;
+
+import android.os.Bundle;
+import android.view.accessibility.AccessibilityNodeInfo;
+import android.view.accessibility.AccessibilityNodeProvider;
+import java.util.List;
+
+class AccessibilityNodeProviderCompatKitKat
+{
+ static interface AccessibilityNodeInfoBridge
+ {
+
+ public abstract Object createAccessibilityNodeInfo(int i);
+
+ public abstract List findAccessibilityNodeInfosByText(String s, int i);
+
+ public abstract Object findFocus(int i);
+
+ public abstract boolean performAction(int i, int j, Bundle bundle);
+ }
+
+
+ AccessibilityNodeProviderCompatKitKat()
+ {
+ }
+
+ public static Object newAccessibilityNodeProviderBridge(final AccessibilityNodeInfoBridge bridge)
+ {
+ return new AccessibilityNodeProvider() {
+
+ public AccessibilityNodeInfo createAccessibilityNodeInfo(int i)
+ {
+ return (AccessibilityNodeInfo)bridge.createAccessibilityNodeInfo(i);
+ }
+
+ public List findAccessibilityNodeInfosByText(String s, int i)
+ {
+ return bridge.findAccessibilityNodeInfosByText(s, i);
+ }
+
+ public AccessibilityNodeInfo findFocus(int i)
+ {
+ return (AccessibilityNodeInfo)bridge.findFocus(i);
+ }
+
+ public boolean performAction(int i, int j, Bundle bundle)
+ {
+ return bridge.performAction(i, j, bundle);
+ }
+
+ final AccessibilityNodeInfoBridge val$bridge;
+
+
+ {
+ bridge = accessibilitynodeinfobridge;
+ super();
+ }
+ }
+;
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/view/accessibility/AccessibilityRecordCompat.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/view/accessibility/AccessibilityRecordCompat.java
new file mode 100644
index 0000000..b0c3137
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/view/accessibility/AccessibilityRecordCompat.java
@@ -0,0 +1,879 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.view.accessibility;
+
+import android.os.Parcelable;
+import android.view.View;
+import java.util.Collections;
+import java.util.List;
+
+// Referenced classes of package android.support.v4.view.accessibility:
+// AccessibilityNodeInfoCompat, AccessibilityRecordCompatJellyBean, AccessibilityRecordCompatIcsMr1, AccessibilityRecordCompatIcs
+
+public class AccessibilityRecordCompat
+{
+ static class AccessibilityRecordJellyBeanImpl extends AccessibilityRecordIcsMr1Impl
+ {
+
+ public void setSource(Object obj, View view, int i)
+ {
+ AccessibilityRecordCompatJellyBean.setSource(obj, view, i);
+ }
+
+ AccessibilityRecordJellyBeanImpl()
+ {
+ }
+ }
+
+ static class AccessibilityRecordIcsMr1Impl extends AccessibilityRecordIcsImpl
+ {
+
+ public int getMaxScrollX(Object obj)
+ {
+ return AccessibilityRecordCompatIcsMr1.getMaxScrollX(obj);
+ }
+
+ public int getMaxScrollY(Object obj)
+ {
+ return AccessibilityRecordCompatIcsMr1.getMaxScrollY(obj);
+ }
+
+ public void setMaxScrollX(Object obj, int i)
+ {
+ AccessibilityRecordCompatIcsMr1.setMaxScrollX(obj, i);
+ }
+
+ public void setMaxScrollY(Object obj, int i)
+ {
+ AccessibilityRecordCompatIcsMr1.setMaxScrollY(obj, i);
+ }
+
+ AccessibilityRecordIcsMr1Impl()
+ {
+ }
+ }
+
+ static class AccessibilityRecordIcsImpl extends AccessibilityRecordStubImpl
+ {
+
+ public int getAddedCount(Object obj)
+ {
+ return AccessibilityRecordCompatIcs.getAddedCount(obj);
+ }
+
+ public CharSequence getBeforeText(Object obj)
+ {
+ return AccessibilityRecordCompatIcs.getBeforeText(obj);
+ }
+
+ public CharSequence getClassName(Object obj)
+ {
+ return AccessibilityRecordCompatIcs.getClassName(obj);
+ }
+
+ public CharSequence getContentDescription(Object obj)
+ {
+ return AccessibilityRecordCompatIcs.getContentDescription(obj);
+ }
+
+ public int getCurrentItemIndex(Object obj)
+ {
+ return AccessibilityRecordCompatIcs.getCurrentItemIndex(obj);
+ }
+
+ public int getFromIndex(Object obj)
+ {
+ return AccessibilityRecordCompatIcs.getFromIndex(obj);
+ }
+
+ public int getItemCount(Object obj)
+ {
+ return AccessibilityRecordCompatIcs.getItemCount(obj);
+ }
+
+ public Parcelable getParcelableData(Object obj)
+ {
+ return AccessibilityRecordCompatIcs.getParcelableData(obj);
+ }
+
+ public int getRemovedCount(Object obj)
+ {
+ return AccessibilityRecordCompatIcs.getRemovedCount(obj);
+ }
+
+ public int getScrollX(Object obj)
+ {
+ return AccessibilityRecordCompatIcs.getScrollX(obj);
+ }
+
+ public int getScrollY(Object obj)
+ {
+ return AccessibilityRecordCompatIcs.getScrollY(obj);
+ }
+
+ public AccessibilityNodeInfoCompat getSource(Object obj)
+ {
+ return AccessibilityNodeInfoCompat.wrapNonNullInstance(AccessibilityRecordCompatIcs.getSource(obj));
+ }
+
+ public List getText(Object obj)
+ {
+ return AccessibilityRecordCompatIcs.getText(obj);
+ }
+
+ public int getToIndex(Object obj)
+ {
+ return AccessibilityRecordCompatIcs.getToIndex(obj);
+ }
+
+ public int getWindowId(Object obj)
+ {
+ return AccessibilityRecordCompatIcs.getWindowId(obj);
+ }
+
+ public boolean isChecked(Object obj)
+ {
+ return AccessibilityRecordCompatIcs.isChecked(obj);
+ }
+
+ public boolean isEnabled(Object obj)
+ {
+ return AccessibilityRecordCompatIcs.isEnabled(obj);
+ }
+
+ public boolean isFullScreen(Object obj)
+ {
+ return AccessibilityRecordCompatIcs.isFullScreen(obj);
+ }
+
+ public boolean isPassword(Object obj)
+ {
+ return AccessibilityRecordCompatIcs.isPassword(obj);
+ }
+
+ public boolean isScrollable(Object obj)
+ {
+ return AccessibilityRecordCompatIcs.isScrollable(obj);
+ }
+
+ public Object obtain()
+ {
+ return AccessibilityRecordCompatIcs.obtain();
+ }
+
+ public Object obtain(Object obj)
+ {
+ return AccessibilityRecordCompatIcs.obtain(obj);
+ }
+
+ public void recycle(Object obj)
+ {
+ AccessibilityRecordCompatIcs.recycle(obj);
+ }
+
+ public void setAddedCount(Object obj, int i)
+ {
+ AccessibilityRecordCompatIcs.setAddedCount(obj, i);
+ }
+
+ public void setBeforeText(Object obj, CharSequence charsequence)
+ {
+ AccessibilityRecordCompatIcs.setBeforeText(obj, charsequence);
+ }
+
+ public void setChecked(Object obj, boolean flag)
+ {
+ AccessibilityRecordCompatIcs.setChecked(obj, flag);
+ }
+
+ public void setClassName(Object obj, CharSequence charsequence)
+ {
+ AccessibilityRecordCompatIcs.setClassName(obj, charsequence);
+ }
+
+ public void setContentDescription(Object obj, CharSequence charsequence)
+ {
+ AccessibilityRecordCompatIcs.setContentDescription(obj, charsequence);
+ }
+
+ public void setCurrentItemIndex(Object obj, int i)
+ {
+ AccessibilityRecordCompatIcs.setCurrentItemIndex(obj, i);
+ }
+
+ public void setEnabled(Object obj, boolean flag)
+ {
+ AccessibilityRecordCompatIcs.setEnabled(obj, flag);
+ }
+
+ public void setFromIndex(Object obj, int i)
+ {
+ AccessibilityRecordCompatIcs.setFromIndex(obj, i);
+ }
+
+ public void setFullScreen(Object obj, boolean flag)
+ {
+ AccessibilityRecordCompatIcs.setFullScreen(obj, flag);
+ }
+
+ public void setItemCount(Object obj, int i)
+ {
+ AccessibilityRecordCompatIcs.setItemCount(obj, i);
+ }
+
+ public void setParcelableData(Object obj, Parcelable parcelable)
+ {
+ AccessibilityRecordCompatIcs.setParcelableData(obj, parcelable);
+ }
+
+ public void setPassword(Object obj, boolean flag)
+ {
+ AccessibilityRecordCompatIcs.setPassword(obj, flag);
+ }
+
+ public void setRemovedCount(Object obj, int i)
+ {
+ AccessibilityRecordCompatIcs.setRemovedCount(obj, i);
+ }
+
+ public void setScrollX(Object obj, int i)
+ {
+ AccessibilityRecordCompatIcs.setScrollX(obj, i);
+ }
+
+ public void setScrollY(Object obj, int i)
+ {
+ AccessibilityRecordCompatIcs.setScrollY(obj, i);
+ }
+
+ public void setScrollable(Object obj, boolean flag)
+ {
+ AccessibilityRecordCompatIcs.setScrollable(obj, flag);
+ }
+
+ public void setSource(Object obj, View view)
+ {
+ AccessibilityRecordCompatIcs.setSource(obj, view);
+ }
+
+ public void setToIndex(Object obj, int i)
+ {
+ AccessibilityRecordCompatIcs.setToIndex(obj, i);
+ }
+
+ AccessibilityRecordIcsImpl()
+ {
+ }
+ }
+
+ static class AccessibilityRecordStubImpl
+ implements AccessibilityRecordImpl
+ {
+
+ public int getAddedCount(Object obj)
+ {
+ return 0;
+ }
+
+ public CharSequence getBeforeText(Object obj)
+ {
+ return null;
+ }
+
+ public CharSequence getClassName(Object obj)
+ {
+ return null;
+ }
+
+ public CharSequence getContentDescription(Object obj)
+ {
+ return null;
+ }
+
+ public int getCurrentItemIndex(Object obj)
+ {
+ return 0;
+ }
+
+ public int getFromIndex(Object obj)
+ {
+ return 0;
+ }
+
+ public int getItemCount(Object obj)
+ {
+ return 0;
+ }
+
+ public int getMaxScrollX(Object obj)
+ {
+ return 0;
+ }
+
+ public int getMaxScrollY(Object obj)
+ {
+ return 0;
+ }
+
+ public Parcelable getParcelableData(Object obj)
+ {
+ return null;
+ }
+
+ public int getRemovedCount(Object obj)
+ {
+ return 0;
+ }
+
+ public int getScrollX(Object obj)
+ {
+ return 0;
+ }
+
+ public int getScrollY(Object obj)
+ {
+ return 0;
+ }
+
+ public AccessibilityNodeInfoCompat getSource(Object obj)
+ {
+ return null;
+ }
+
+ public List getText(Object obj)
+ {
+ return Collections.emptyList();
+ }
+
+ public int getToIndex(Object obj)
+ {
+ return 0;
+ }
+
+ public int getWindowId(Object obj)
+ {
+ return 0;
+ }
+
+ public boolean isChecked(Object obj)
+ {
+ return false;
+ }
+
+ public boolean isEnabled(Object obj)
+ {
+ return false;
+ }
+
+ public boolean isFullScreen(Object obj)
+ {
+ return false;
+ }
+
+ public boolean isPassword(Object obj)
+ {
+ return false;
+ }
+
+ public boolean isScrollable(Object obj)
+ {
+ return false;
+ }
+
+ public Object obtain()
+ {
+ return null;
+ }
+
+ public Object obtain(Object obj)
+ {
+ return null;
+ }
+
+ public void recycle(Object obj)
+ {
+ }
+
+ public void setAddedCount(Object obj, int i)
+ {
+ }
+
+ public void setBeforeText(Object obj, CharSequence charsequence)
+ {
+ }
+
+ public void setChecked(Object obj, boolean flag)
+ {
+ }
+
+ public void setClassName(Object obj, CharSequence charsequence)
+ {
+ }
+
+ public void setContentDescription(Object obj, CharSequence charsequence)
+ {
+ }
+
+ public void setCurrentItemIndex(Object obj, int i)
+ {
+ }
+
+ public void setEnabled(Object obj, boolean flag)
+ {
+ }
+
+ public void setFromIndex(Object obj, int i)
+ {
+ }
+
+ public void setFullScreen(Object obj, boolean flag)
+ {
+ }
+
+ public void setItemCount(Object obj, int i)
+ {
+ }
+
+ public void setMaxScrollX(Object obj, int i)
+ {
+ }
+
+ public void setMaxScrollY(Object obj, int i)
+ {
+ }
+
+ public void setParcelableData(Object obj, Parcelable parcelable)
+ {
+ }
+
+ public void setPassword(Object obj, boolean flag)
+ {
+ }
+
+ public void setRemovedCount(Object obj, int i)
+ {
+ }
+
+ public void setScrollX(Object obj, int i)
+ {
+ }
+
+ public void setScrollY(Object obj, int i)
+ {
+ }
+
+ public void setScrollable(Object obj, boolean flag)
+ {
+ }
+
+ public void setSource(Object obj, View view)
+ {
+ }
+
+ public void setSource(Object obj, View view, int i)
+ {
+ }
+
+ public void setToIndex(Object obj, int i)
+ {
+ }
+
+ AccessibilityRecordStubImpl()
+ {
+ }
+ }
+
+ static interface AccessibilityRecordImpl
+ {
+
+ public abstract int getAddedCount(Object obj);
+
+ public abstract CharSequence getBeforeText(Object obj);
+
+ public abstract CharSequence getClassName(Object obj);
+
+ public abstract CharSequence getContentDescription(Object obj);
+
+ public abstract int getCurrentItemIndex(Object obj);
+
+ public abstract int getFromIndex(Object obj);
+
+ public abstract int getItemCount(Object obj);
+
+ public abstract int getMaxScrollX(Object obj);
+
+ public abstract int getMaxScrollY(Object obj);
+
+ public abstract Parcelable getParcelableData(Object obj);
+
+ public abstract int getRemovedCount(Object obj);
+
+ public abstract int getScrollX(Object obj);
+
+ public abstract int getScrollY(Object obj);
+
+ public abstract AccessibilityNodeInfoCompat getSource(Object obj);
+
+ public abstract List getText(Object obj);
+
+ public abstract int getToIndex(Object obj);
+
+ public abstract int getWindowId(Object obj);
+
+ public abstract boolean isChecked(Object obj);
+
+ public abstract boolean isEnabled(Object obj);
+
+ public abstract boolean isFullScreen(Object obj);
+
+ public abstract boolean isPassword(Object obj);
+
+ public abstract boolean isScrollable(Object obj);
+
+ public abstract Object obtain();
+
+ public abstract Object obtain(Object obj);
+
+ public abstract void recycle(Object obj);
+
+ public abstract void setAddedCount(Object obj, int i);
+
+ public abstract void setBeforeText(Object obj, CharSequence charsequence);
+
+ public abstract void setChecked(Object obj, boolean flag);
+
+ public abstract void setClassName(Object obj, CharSequence charsequence);
+
+ public abstract void setContentDescription(Object obj, CharSequence charsequence);
+
+ public abstract void setCurrentItemIndex(Object obj, int i);
+
+ public abstract void setEnabled(Object obj, boolean flag);
+
+ public abstract void setFromIndex(Object obj, int i);
+
+ public abstract void setFullScreen(Object obj, boolean flag);
+
+ public abstract void setItemCount(Object obj, int i);
+
+ public abstract void setMaxScrollX(Object obj, int i);
+
+ public abstract void setMaxScrollY(Object obj, int i);
+
+ public abstract void setParcelableData(Object obj, Parcelable parcelable);
+
+ public abstract void setPassword(Object obj, boolean flag);
+
+ public abstract void setRemovedCount(Object obj, int i);
+
+ public abstract void setScrollX(Object obj, int i);
+
+ public abstract void setScrollY(Object obj, int i);
+
+ public abstract void setScrollable(Object obj, boolean flag);
+
+ public abstract void setSource(Object obj, View view);
+
+ public abstract void setSource(Object obj, View view, int i);
+
+ public abstract void setToIndex(Object obj, int i);
+ }
+
+
+ public AccessibilityRecordCompat(Object obj)
+ {
+ mRecord = obj;
+ }
+
+ public static AccessibilityRecordCompat obtain()
+ {
+ return new AccessibilityRecordCompat(IMPL.obtain());
+ }
+
+ public static AccessibilityRecordCompat obtain(AccessibilityRecordCompat accessibilityrecordcompat)
+ {
+ return new AccessibilityRecordCompat(IMPL.obtain(accessibilityrecordcompat.mRecord));
+ }
+
+ public boolean equals(Object obj)
+ {
+ boolean flag = true;
+ if(this != obj) goto _L2; else goto _L1
+_L1:
+ return flag;
+_L2:
+ if(obj == null)
+ flag = false;
+ else
+ if(getClass() != obj.getClass())
+ {
+ flag = false;
+ } else
+ {
+ AccessibilityRecordCompat accessibilityrecordcompat = (AccessibilityRecordCompat)obj;
+ if(mRecord == null)
+ {
+ if(accessibilityrecordcompat.mRecord != null)
+ flag = false;
+ } else
+ if(!mRecord.equals(accessibilityrecordcompat.mRecord))
+ flag = false;
+ }
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ public int getAddedCount()
+ {
+ return IMPL.getAddedCount(mRecord);
+ }
+
+ public CharSequence getBeforeText()
+ {
+ return IMPL.getBeforeText(mRecord);
+ }
+
+ public CharSequence getClassName()
+ {
+ return IMPL.getClassName(mRecord);
+ }
+
+ public CharSequence getContentDescription()
+ {
+ return IMPL.getContentDescription(mRecord);
+ }
+
+ public int getCurrentItemIndex()
+ {
+ return IMPL.getCurrentItemIndex(mRecord);
+ }
+
+ public int getFromIndex()
+ {
+ return IMPL.getFromIndex(mRecord);
+ }
+
+ public Object getImpl()
+ {
+ return mRecord;
+ }
+
+ public int getItemCount()
+ {
+ return IMPL.getItemCount(mRecord);
+ }
+
+ public int getMaxScrollX()
+ {
+ return IMPL.getMaxScrollX(mRecord);
+ }
+
+ public int getMaxScrollY()
+ {
+ return IMPL.getMaxScrollY(mRecord);
+ }
+
+ public Parcelable getParcelableData()
+ {
+ return IMPL.getParcelableData(mRecord);
+ }
+
+ public int getRemovedCount()
+ {
+ return IMPL.getRemovedCount(mRecord);
+ }
+
+ public int getScrollX()
+ {
+ return IMPL.getScrollX(mRecord);
+ }
+
+ public int getScrollY()
+ {
+ return IMPL.getScrollY(mRecord);
+ }
+
+ public AccessibilityNodeInfoCompat getSource()
+ {
+ return IMPL.getSource(mRecord);
+ }
+
+ public List getText()
+ {
+ return IMPL.getText(mRecord);
+ }
+
+ public int getToIndex()
+ {
+ return IMPL.getToIndex(mRecord);
+ }
+
+ public int getWindowId()
+ {
+ return IMPL.getWindowId(mRecord);
+ }
+
+ public int hashCode()
+ {
+ int i;
+ if(mRecord == null)
+ i = 0;
+ else
+ i = mRecord.hashCode();
+ return i;
+ }
+
+ public boolean isChecked()
+ {
+ return IMPL.isChecked(mRecord);
+ }
+
+ public boolean isEnabled()
+ {
+ return IMPL.isEnabled(mRecord);
+ }
+
+ public boolean isFullScreen()
+ {
+ return IMPL.isFullScreen(mRecord);
+ }
+
+ public boolean isPassword()
+ {
+ return IMPL.isPassword(mRecord);
+ }
+
+ public boolean isScrollable()
+ {
+ return IMPL.isScrollable(mRecord);
+ }
+
+ public void recycle()
+ {
+ IMPL.recycle(mRecord);
+ }
+
+ public void setAddedCount(int i)
+ {
+ IMPL.setAddedCount(mRecord, i);
+ }
+
+ public void setBeforeText(CharSequence charsequence)
+ {
+ IMPL.setBeforeText(mRecord, charsequence);
+ }
+
+ public void setChecked(boolean flag)
+ {
+ IMPL.setChecked(mRecord, flag);
+ }
+
+ public void setClassName(CharSequence charsequence)
+ {
+ IMPL.setClassName(mRecord, charsequence);
+ }
+
+ public void setContentDescription(CharSequence charsequence)
+ {
+ IMPL.setContentDescription(mRecord, charsequence);
+ }
+
+ public void setCurrentItemIndex(int i)
+ {
+ IMPL.setCurrentItemIndex(mRecord, i);
+ }
+
+ public void setEnabled(boolean flag)
+ {
+ IMPL.setEnabled(mRecord, flag);
+ }
+
+ public void setFromIndex(int i)
+ {
+ IMPL.setFromIndex(mRecord, i);
+ }
+
+ public void setFullScreen(boolean flag)
+ {
+ IMPL.setFullScreen(mRecord, flag);
+ }
+
+ public void setItemCount(int i)
+ {
+ IMPL.setItemCount(mRecord, i);
+ }
+
+ public void setMaxScrollX(int i)
+ {
+ IMPL.setMaxScrollX(mRecord, i);
+ }
+
+ public void setMaxScrollY(int i)
+ {
+ IMPL.setMaxScrollY(mRecord, i);
+ }
+
+ public void setParcelableData(Parcelable parcelable)
+ {
+ IMPL.setParcelableData(mRecord, parcelable);
+ }
+
+ public void setPassword(boolean flag)
+ {
+ IMPL.setPassword(mRecord, flag);
+ }
+
+ public void setRemovedCount(int i)
+ {
+ IMPL.setRemovedCount(mRecord, i);
+ }
+
+ public void setScrollX(int i)
+ {
+ IMPL.setScrollX(mRecord, i);
+ }
+
+ public void setScrollY(int i)
+ {
+ IMPL.setScrollY(mRecord, i);
+ }
+
+ public void setScrollable(boolean flag)
+ {
+ IMPL.setScrollable(mRecord, flag);
+ }
+
+ public void setSource(View view)
+ {
+ IMPL.setSource(mRecord, view);
+ }
+
+ public void setSource(View view, int i)
+ {
+ IMPL.setSource(mRecord, view, i);
+ }
+
+ public void setToIndex(int i)
+ {
+ IMPL.setToIndex(mRecord, i);
+ }
+
+ private static final AccessibilityRecordImpl IMPL;
+ private final Object mRecord;
+
+ static
+ {
+ if(android.os.Build.VERSION.SDK_INT >= 16)
+ IMPL = new AccessibilityRecordJellyBeanImpl();
+ else
+ if(android.os.Build.VERSION.SDK_INT >= 15)
+ IMPL = new AccessibilityRecordIcsMr1Impl();
+ else
+ if(android.os.Build.VERSION.SDK_INT >= 14)
+ IMPL = new AccessibilityRecordIcsImpl();
+ else
+ IMPL = new AccessibilityRecordStubImpl();
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/view/accessibility/AccessibilityRecordCompatIcs.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/view/accessibility/AccessibilityRecordCompatIcs.java
new file mode 100644
index 0000000..be65b8e
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/view/accessibility/AccessibilityRecordCompatIcs.java
@@ -0,0 +1,223 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.view.accessibility;
+
+import android.os.Parcelable;
+import android.view.View;
+import android.view.accessibility.AccessibilityRecord;
+import java.util.List;
+
+class AccessibilityRecordCompatIcs
+{
+
+ AccessibilityRecordCompatIcs()
+ {
+ }
+
+ public static int getAddedCount(Object obj)
+ {
+ return ((AccessibilityRecord)obj).getAddedCount();
+ }
+
+ public static CharSequence getBeforeText(Object obj)
+ {
+ return ((AccessibilityRecord)obj).getBeforeText();
+ }
+
+ public static CharSequence getClassName(Object obj)
+ {
+ return ((AccessibilityRecord)obj).getClassName();
+ }
+
+ public static CharSequence getContentDescription(Object obj)
+ {
+ return ((AccessibilityRecord)obj).getContentDescription();
+ }
+
+ public static int getCurrentItemIndex(Object obj)
+ {
+ return ((AccessibilityRecord)obj).getCurrentItemIndex();
+ }
+
+ public static int getFromIndex(Object obj)
+ {
+ return ((AccessibilityRecord)obj).getFromIndex();
+ }
+
+ public static int getItemCount(Object obj)
+ {
+ return ((AccessibilityRecord)obj).getItemCount();
+ }
+
+ public static Parcelable getParcelableData(Object obj)
+ {
+ return ((AccessibilityRecord)obj).getParcelableData();
+ }
+
+ public static int getRemovedCount(Object obj)
+ {
+ return ((AccessibilityRecord)obj).getRemovedCount();
+ }
+
+ public static int getScrollX(Object obj)
+ {
+ return ((AccessibilityRecord)obj).getScrollX();
+ }
+
+ public static int getScrollY(Object obj)
+ {
+ return ((AccessibilityRecord)obj).getScrollY();
+ }
+
+ public static Object getSource(Object obj)
+ {
+ return ((AccessibilityRecord)obj).getSource();
+ }
+
+ public static List getText(Object obj)
+ {
+ return ((AccessibilityRecord)obj).getText();
+ }
+
+ public static int getToIndex(Object obj)
+ {
+ return ((AccessibilityRecord)obj).getToIndex();
+ }
+
+ public static int getWindowId(Object obj)
+ {
+ return ((AccessibilityRecord)obj).getWindowId();
+ }
+
+ public static boolean isChecked(Object obj)
+ {
+ return ((AccessibilityRecord)obj).isChecked();
+ }
+
+ public static boolean isEnabled(Object obj)
+ {
+ return ((AccessibilityRecord)obj).isEnabled();
+ }
+
+ public static boolean isFullScreen(Object obj)
+ {
+ return ((AccessibilityRecord)obj).isFullScreen();
+ }
+
+ public static boolean isPassword(Object obj)
+ {
+ return ((AccessibilityRecord)obj).isPassword();
+ }
+
+ public static boolean isScrollable(Object obj)
+ {
+ return ((AccessibilityRecord)obj).isScrollable();
+ }
+
+ public static Object obtain()
+ {
+ return AccessibilityRecord.obtain();
+ }
+
+ public static Object obtain(Object obj)
+ {
+ return AccessibilityRecord.obtain((AccessibilityRecord)obj);
+ }
+
+ public static void recycle(Object obj)
+ {
+ ((AccessibilityRecord)obj).recycle();
+ }
+
+ public static void setAddedCount(Object obj, int i)
+ {
+ ((AccessibilityRecord)obj).setAddedCount(i);
+ }
+
+ public static void setBeforeText(Object obj, CharSequence charsequence)
+ {
+ ((AccessibilityRecord)obj).setBeforeText(charsequence);
+ }
+
+ public static void setChecked(Object obj, boolean flag)
+ {
+ ((AccessibilityRecord)obj).setChecked(flag);
+ }
+
+ public static void setClassName(Object obj, CharSequence charsequence)
+ {
+ ((AccessibilityRecord)obj).setClassName(charsequence);
+ }
+
+ public static void setContentDescription(Object obj, CharSequence charsequence)
+ {
+ ((AccessibilityRecord)obj).setContentDescription(charsequence);
+ }
+
+ public static void setCurrentItemIndex(Object obj, int i)
+ {
+ ((AccessibilityRecord)obj).setCurrentItemIndex(i);
+ }
+
+ public static void setEnabled(Object obj, boolean flag)
+ {
+ ((AccessibilityRecord)obj).setEnabled(flag);
+ }
+
+ public static void setFromIndex(Object obj, int i)
+ {
+ ((AccessibilityRecord)obj).setFromIndex(i);
+ }
+
+ public static void setFullScreen(Object obj, boolean flag)
+ {
+ ((AccessibilityRecord)obj).setFullScreen(flag);
+ }
+
+ public static void setItemCount(Object obj, int i)
+ {
+ ((AccessibilityRecord)obj).setItemCount(i);
+ }
+
+ public static void setParcelableData(Object obj, Parcelable parcelable)
+ {
+ ((AccessibilityRecord)obj).setParcelableData(parcelable);
+ }
+
+ public static void setPassword(Object obj, boolean flag)
+ {
+ ((AccessibilityRecord)obj).setPassword(flag);
+ }
+
+ public static void setRemovedCount(Object obj, int i)
+ {
+ ((AccessibilityRecord)obj).setRemovedCount(i);
+ }
+
+ public static void setScrollX(Object obj, int i)
+ {
+ ((AccessibilityRecord)obj).setScrollX(i);
+ }
+
+ public static void setScrollY(Object obj, int i)
+ {
+ ((AccessibilityRecord)obj).setScrollY(i);
+ }
+
+ public static void setScrollable(Object obj, boolean flag)
+ {
+ ((AccessibilityRecord)obj).setScrollable(flag);
+ }
+
+ public static void setSource(Object obj, View view)
+ {
+ ((AccessibilityRecord)obj).setSource(view);
+ }
+
+ public static void setToIndex(Object obj, int i)
+ {
+ ((AccessibilityRecord)obj).setToIndex(i);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/view/accessibility/AccessibilityRecordCompatIcsMr1.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/view/accessibility/AccessibilityRecordCompatIcsMr1.java
new file mode 100644
index 0000000..c771921
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/view/accessibility/AccessibilityRecordCompatIcsMr1.java
@@ -0,0 +1,35 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.view.accessibility;
+
+import android.view.accessibility.AccessibilityRecord;
+
+class AccessibilityRecordCompatIcsMr1
+{
+
+ AccessibilityRecordCompatIcsMr1()
+ {
+ }
+
+ public static int getMaxScrollX(Object obj)
+ {
+ return ((AccessibilityRecord)obj).getMaxScrollX();
+ }
+
+ public static int getMaxScrollY(Object obj)
+ {
+ return ((AccessibilityRecord)obj).getMaxScrollY();
+ }
+
+ public static void setMaxScrollX(Object obj, int i)
+ {
+ ((AccessibilityRecord)obj).setMaxScrollX(i);
+ }
+
+ public static void setMaxScrollY(Object obj, int i)
+ {
+ ((AccessibilityRecord)obj).setMaxScrollY(i);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/view/accessibility/AccessibilityRecordCompatJellyBean.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/view/accessibility/AccessibilityRecordCompatJellyBean.java
new file mode 100644
index 0000000..deea911
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/view/accessibility/AccessibilityRecordCompatJellyBean.java
@@ -0,0 +1,21 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.view.accessibility;
+
+import android.view.View;
+import android.view.accessibility.AccessibilityRecord;
+
+class AccessibilityRecordCompatJellyBean
+{
+
+ AccessibilityRecordCompatJellyBean()
+ {
+ }
+
+ public static void setSource(Object obj, View view, int i)
+ {
+ ((AccessibilityRecord)obj).setSource(view, i);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/AutoScrollHelper.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/AutoScrollHelper.java
new file mode 100644
index 0000000..1493416
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/AutoScrollHelper.java
@@ -0,0 +1,558 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+import android.content.res.Resources;
+import android.os.SystemClock;
+import android.support.v4.view.MotionEventCompat;
+import android.support.v4.view.ViewCompat;
+import android.util.DisplayMetrics;
+import android.view.*;
+import android.view.animation.*;
+
+public abstract class AutoScrollHelper
+ implements android.view.View.OnTouchListener
+{
+ private static class ClampedScroller
+ {
+
+ private float getValueAt(long l)
+ {
+ float f = 0.0F;
+ if(l >= mStartTime)
+ if(mStopTime < 0L || l < mStopTime)
+ {
+ f = 0.5F * AutoScrollHelper.constrain((float)(l - mStartTime) / (float)mRampUpDuration, 0.0F, 1.0F);
+ } else
+ {
+ long l1 = l - mStopTime;
+ f = (1.0F - mStopValue) + mStopValue * AutoScrollHelper.constrain((float)l1 / (float)mEffectiveRampDown, 0.0F, 1.0F);
+ }
+ return f;
+ }
+
+ private float interpolateValue(float f)
+ {
+ return f * (-4F * f) + 4F * f;
+ }
+
+ public void computeScrollDelta()
+ {
+ if(mDeltaTime == 0L)
+ {
+ throw new RuntimeException("Cannot compute scroll delta before calling start()");
+ } else
+ {
+ long l = AnimationUtils.currentAnimationTimeMillis();
+ float f = interpolateValue(getValueAt(l));
+ long l1 = l - mDeltaTime;
+ mDeltaTime = l;
+ mDeltaX = (int)(f * (float)l1 * mTargetVelocityX);
+ mDeltaY = (int)(f * (float)l1 * mTargetVelocityY);
+ return;
+ }
+ }
+
+ public int getDeltaX()
+ {
+ return mDeltaX;
+ }
+
+ public int getDeltaY()
+ {
+ return mDeltaY;
+ }
+
+ public int getHorizontalDirection()
+ {
+ return (int)(mTargetVelocityX / Math.abs(mTargetVelocityX));
+ }
+
+ public int getVerticalDirection()
+ {
+ return (int)(mTargetVelocityY / Math.abs(mTargetVelocityY));
+ }
+
+ public boolean isFinished()
+ {
+ boolean flag;
+ if(mStopTime > 0L && AnimationUtils.currentAnimationTimeMillis() > mStopTime + (long)mEffectiveRampDown)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ public void requestStop()
+ {
+ long l = AnimationUtils.currentAnimationTimeMillis();
+ mEffectiveRampDown = AutoScrollHelper.constrain((int)(l - mStartTime), 0, mRampDownDuration);
+ mStopValue = getValueAt(l);
+ mStopTime = l;
+ }
+
+ public void setRampDownDuration(int i)
+ {
+ mRampDownDuration = i;
+ }
+
+ public void setRampUpDuration(int i)
+ {
+ mRampUpDuration = i;
+ }
+
+ public void setTargetVelocity(float f, float f1)
+ {
+ mTargetVelocityX = f;
+ mTargetVelocityY = f1;
+ }
+
+ public void start()
+ {
+ mStartTime = AnimationUtils.currentAnimationTimeMillis();
+ mStopTime = -1L;
+ mDeltaTime = mStartTime;
+ mStopValue = 0.5F;
+ mDeltaX = 0;
+ mDeltaY = 0;
+ }
+
+ private long mDeltaTime;
+ private int mDeltaX;
+ private int mDeltaY;
+ private int mEffectiveRampDown;
+ private int mRampDownDuration;
+ private int mRampUpDuration;
+ private long mStartTime;
+ private long mStopTime;
+ private float mStopValue;
+ private float mTargetVelocityX;
+ private float mTargetVelocityY;
+
+ public ClampedScroller()
+ {
+ mStartTime = 0x8000000000000000L;
+ mStopTime = -1L;
+ mDeltaTime = 0L;
+ mDeltaX = 0;
+ mDeltaY = 0;
+ }
+ }
+
+ private class ScrollAnimationRunnable
+ implements Runnable
+ {
+
+ public void run()
+ {
+ if(mAnimating)
+ {
+ if(mNeedsReset)
+ {
+ mNeedsReset = false;
+ mScroller.start();
+ }
+ ClampedScroller clampedscroller = mScroller;
+ if(clampedscroller.isFinished() || !shouldAnimate())
+ {
+ mAnimating = false;
+ } else
+ {
+ if(mNeedsCancel)
+ {
+ mNeedsCancel = false;
+ cancelTargetTouch();
+ }
+ clampedscroller.computeScrollDelta();
+ int i = clampedscroller.getDeltaX();
+ int j = clampedscroller.getDeltaY();
+ scrollTargetBy(i, j);
+ ViewCompat.postOnAnimation(mTarget, this);
+ }
+ }
+ }
+
+ final AutoScrollHelper this$0;
+
+ private ScrollAnimationRunnable()
+ {
+ this$0 = AutoScrollHelper.this;
+ super();
+ }
+
+ }
+
+
+ public AutoScrollHelper(View view)
+ {
+ float af[] = new float[2];
+ af[0] = 0.0F;
+ af[1] = 0.0F;
+ mRelativeEdges = af;
+ float af1[] = new float[2];
+ af1[0] = 3.402823E+038F;
+ af1[1] = 3.402823E+038F;
+ mMaximumEdges = af1;
+ float af2[] = new float[2];
+ af2[0] = 0.0F;
+ af2[1] = 0.0F;
+ mRelativeVelocity = af2;
+ float af3[] = new float[2];
+ af3[0] = 0.0F;
+ af3[1] = 0.0F;
+ mMinimumVelocity = af3;
+ float af4[] = new float[2];
+ af4[0] = 3.402823E+038F;
+ af4[1] = 3.402823E+038F;
+ mMaximumVelocity = af4;
+ mTarget = view;
+ DisplayMetrics displaymetrics = Resources.getSystem().getDisplayMetrics();
+ int i = (int)(0.5F + 1575F * displaymetrics.density);
+ int j = (int)(0.5F + 315F * displaymetrics.density);
+ setMaximumVelocity(i, i);
+ setMinimumVelocity(j, j);
+ setEdgeType(1);
+ setMaximumEdges(3.402823E+038F, 3.402823E+038F);
+ setRelativeEdges(0.2F, 0.2F);
+ setRelativeVelocity(1.0F, 1.0F);
+ setActivationDelay(DEFAULT_ACTIVATION_DELAY);
+ setRampUpDuration(500);
+ setRampDownDuration(500);
+ }
+
+ private void cancelTargetTouch()
+ {
+ long l = SystemClock.uptimeMillis();
+ MotionEvent motionevent = MotionEvent.obtain(l, l, 3, 0.0F, 0.0F, 0);
+ mTarget.onTouchEvent(motionevent);
+ motionevent.recycle();
+ }
+
+ private float computeTargetVelocity(int i, float f, float f1, float f2)
+ {
+ float f3 = 0.0F;
+ float f4 = getEdgeValue(mRelativeEdges[i], f1, mMaximumEdges[i], f);
+ if(f4 != 0.0F)
+ {
+ float f5 = mRelativeVelocity[i];
+ float f6 = mMinimumVelocity[i];
+ float f7 = mMaximumVelocity[i];
+ float f8 = f5 * f2;
+ if(f4 > 0.0F)
+ f3 = constrain(f4 * f8, f6, f7);
+ else
+ f3 = -constrain(f8 * -f4, f6, f7);
+ }
+ return f3;
+ }
+
+ private static float constrain(float f, float f1, float f2)
+ {
+ if(f <= f2)
+ if(f < f1)
+ f2 = f1;
+ else
+ f2 = f;
+ return f2;
+ }
+
+ private static int constrain(int i, int j, int k)
+ {
+ if(i <= k)
+ if(i < j)
+ k = j;
+ else
+ k = i;
+ return k;
+ }
+
+ private float constrainEdgeValue(float f, float f1)
+ {
+ float f2 = 0.0F;
+ if(f1 != 0.0F) goto _L2; else goto _L1
+_L1:
+ return f2;
+_L2:
+ switch(mEdgeType)
+ {
+ case 0: // '\0'
+ case 1: // '\001'
+ if(f < f1)
+ if(f >= 0.0F)
+ f2 = 1.0F - f / f1;
+ else
+ if(mAnimating && mEdgeType == 1)
+ f2 = 1.0F;
+ break;
+
+ case 2: // '\002'
+ if(f < 0.0F)
+ f2 = f / -f1;
+ break;
+ }
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ private float getEdgeValue(float f, float f1, float f2, float f3)
+ {
+ float f4;
+ float f7;
+ f4 = 0.0F;
+ float f5 = constrain(f * f1, 0.0F, f2);
+ float f6 = constrainEdgeValue(f3, f5);
+ f7 = constrainEdgeValue(f1 - f3, f5) - f6;
+ if(f7 >= 0.0F) goto _L2; else goto _L1
+_L1:
+ float f8 = -mEdgeInterpolator.getInterpolation(-f7);
+_L6:
+ f4 = constrain(f8, -1F, 1.0F);
+_L4:
+ return f4;
+_L2:
+ if(f7 <= 0.0F) goto _L4; else goto _L3
+_L3:
+ f8 = mEdgeInterpolator.getInterpolation(f7);
+ if(true) goto _L6; else goto _L5
+_L5:
+ }
+
+ private void requestStop()
+ {
+ if(mNeedsReset)
+ mAnimating = false;
+ else
+ mScroller.requestStop();
+ }
+
+ private boolean shouldAnimate()
+ {
+ ClampedScroller clampedscroller = mScroller;
+ int i = clampedscroller.getVerticalDirection();
+ int j = clampedscroller.getHorizontalDirection();
+ boolean flag;
+ if(i != 0 && canTargetScrollVertically(i) || j != 0 && canTargetScrollHorizontally(j))
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ private void startAnimating()
+ {
+ if(mRunnable == null)
+ mRunnable = new ScrollAnimationRunnable();
+ mAnimating = true;
+ mNeedsReset = true;
+ if(!mAlreadyDelayed && mActivationDelay > 0)
+ ViewCompat.postOnAnimationDelayed(mTarget, mRunnable, mActivationDelay);
+ else
+ mRunnable.run();
+ mAlreadyDelayed = true;
+ }
+
+ public abstract boolean canTargetScrollHorizontally(int i);
+
+ public abstract boolean canTargetScrollVertically(int i);
+
+ public boolean isEnabled()
+ {
+ return mEnabled;
+ }
+
+ public boolean isExclusive()
+ {
+ return mExclusive;
+ }
+
+ public boolean onTouch(View view, MotionEvent motionevent)
+ {
+ boolean flag;
+ boolean flag1;
+ flag = true;
+ flag1 = false;
+ if(mEnabled) goto _L2; else goto _L1
+_L1:
+ return flag1;
+_L2:
+ MotionEventCompat.getActionMasked(motionevent);
+ JVM INSTR tableswitch 0 3: default 48
+ // 0 68
+ // 1 158
+ // 2 78
+ // 3 158;
+ goto _L3 _L4 _L5 _L6 _L5
+_L3:
+ float f;
+ float f1;
+ if(!mExclusive || !mAnimating)
+ flag = false;
+ flag1 = flag;
+ if(true) goto _L1; else goto _L4
+_L4:
+ mNeedsCancel = flag;
+ mAlreadyDelayed = false;
+_L6:
+ f = computeTargetVelocity(0, motionevent.getX(), view.getWidth(), mTarget.getWidth());
+ f1 = computeTargetVelocity(flag, motionevent.getY(), view.getHeight(), mTarget.getHeight());
+ mScroller.setTargetVelocity(f, f1);
+ if(!mAnimating && shouldAnimate())
+ startAnimating();
+ goto _L3
+_L5:
+ requestStop();
+ goto _L3
+ }
+
+ public abstract void scrollTargetBy(int i, int j);
+
+ public AutoScrollHelper setActivationDelay(int i)
+ {
+ mActivationDelay = i;
+ return this;
+ }
+
+ public AutoScrollHelper setEdgeType(int i)
+ {
+ mEdgeType = i;
+ return this;
+ }
+
+ public AutoScrollHelper setEnabled(boolean flag)
+ {
+ if(mEnabled && !flag)
+ requestStop();
+ mEnabled = flag;
+ return this;
+ }
+
+ public AutoScrollHelper setExclusive(boolean flag)
+ {
+ mExclusive = flag;
+ return this;
+ }
+
+ public AutoScrollHelper setMaximumEdges(float f, float f1)
+ {
+ mMaximumEdges[0] = f;
+ mMaximumEdges[1] = f1;
+ return this;
+ }
+
+ public AutoScrollHelper setMaximumVelocity(float f, float f1)
+ {
+ mMaximumVelocity[0] = f / 1000F;
+ mMaximumVelocity[1] = f1 / 1000F;
+ return this;
+ }
+
+ public AutoScrollHelper setMinimumVelocity(float f, float f1)
+ {
+ mMinimumVelocity[0] = f / 1000F;
+ mMinimumVelocity[1] = f1 / 1000F;
+ return this;
+ }
+
+ public AutoScrollHelper setRampDownDuration(int i)
+ {
+ mScroller.setRampDownDuration(i);
+ return this;
+ }
+
+ public AutoScrollHelper setRampUpDuration(int i)
+ {
+ mScroller.setRampUpDuration(i);
+ return this;
+ }
+
+ public AutoScrollHelper setRelativeEdges(float f, float f1)
+ {
+ mRelativeEdges[0] = f;
+ mRelativeEdges[1] = f1;
+ return this;
+ }
+
+ public AutoScrollHelper setRelativeVelocity(float f, float f1)
+ {
+ mRelativeVelocity[0] = f / 1000F;
+ mRelativeVelocity[1] = f1 / 1000F;
+ return this;
+ }
+
+ private static final int DEFAULT_ACTIVATION_DELAY = ViewConfiguration.getTapTimeout();
+ private static final int DEFAULT_EDGE_TYPE = 1;
+ private static final float DEFAULT_MAXIMUM_EDGE = 3.402823E+038F;
+ private static final int DEFAULT_MAXIMUM_VELOCITY_DIPS = 1575;
+ private static final int DEFAULT_MINIMUM_VELOCITY_DIPS = 315;
+ private static final int DEFAULT_RAMP_DOWN_DURATION = 500;
+ private static final int DEFAULT_RAMP_UP_DURATION = 500;
+ private static final float DEFAULT_RELATIVE_EDGE = 0.2F;
+ private static final float DEFAULT_RELATIVE_VELOCITY = 1F;
+ public static final int EDGE_TYPE_INSIDE = 0;
+ public static final int EDGE_TYPE_INSIDE_EXTEND = 1;
+ public static final int EDGE_TYPE_OUTSIDE = 2;
+ private static final int HORIZONTAL = 0;
+ public static final float NO_MAX = 3.402823E+038F;
+ public static final float NO_MIN = 0F;
+ public static final float RELATIVE_UNSPECIFIED = 0F;
+ private static final int VERTICAL = 1;
+ private int mActivationDelay;
+ private boolean mAlreadyDelayed;
+ private boolean mAnimating;
+ private final Interpolator mEdgeInterpolator = new AccelerateInterpolator();
+ private int mEdgeType;
+ private boolean mEnabled;
+ private boolean mExclusive;
+ private float mMaximumEdges[];
+ private float mMaximumVelocity[];
+ private float mMinimumVelocity[];
+ private boolean mNeedsCancel;
+ private boolean mNeedsReset;
+ private float mRelativeEdges[];
+ private float mRelativeVelocity[];
+ private Runnable mRunnable;
+ private final ClampedScroller mScroller = new ClampedScroller();
+ private final View mTarget;
+
+
+
+
+/*
+ static boolean access$102(AutoScrollHelper autoscrollhelper, boolean flag)
+ {
+ autoscrollhelper.mAnimating = flag;
+ return flag;
+ }
+
+*/
+
+
+
+/*
+ static boolean access$202(AutoScrollHelper autoscrollhelper, boolean flag)
+ {
+ autoscrollhelper.mNeedsReset = flag;
+ return flag;
+ }
+
+*/
+
+
+
+
+
+/*
+ static boolean access$502(AutoScrollHelper autoscrollhelper, boolean flag)
+ {
+ autoscrollhelper.mNeedsCancel = flag;
+ return flag;
+ }
+
+*/
+
+
+
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/BakedBezierInterpolator.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/BakedBezierInterpolator.java
new file mode 100644
index 0000000..08c4233
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/BakedBezierInterpolator.java
@@ -0,0 +1,149 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+import android.view.animation.Interpolator;
+
+final class BakedBezierInterpolator
+ implements Interpolator
+{
+
+ private BakedBezierInterpolator()
+ {
+ }
+
+ public static final BakedBezierInterpolator getInstance()
+ {
+ return INSTANCE;
+ }
+
+ public float getInterpolation(float f)
+ {
+ float f1 = 1.0F;
+ if(f < f1)
+ if(f <= 0.0F)
+ {
+ f1 = 0.0F;
+ } else
+ {
+ int i = Math.min((int)(f * (float)(-1 + VALUES.length)), -2 + VALUES.length);
+ float f2 = (f - (float)i * STEP_SIZE) / STEP_SIZE;
+ f1 = VALUES[i] + f2 * (VALUES[i + 1] - VALUES[i]);
+ }
+ return f1;
+ }
+
+ private static final BakedBezierInterpolator INSTANCE = new BakedBezierInterpolator();
+ private static final float STEP_SIZE;
+ private static final float VALUES[];
+
+ static
+ {
+ float af[] = new float[101];
+ af[0] = 0.0F;
+ af[1] = 0.0002F;
+ af[2] = 0.0009F;
+ af[3] = 0.0019F;
+ af[4] = 0.0036F;
+ af[5] = 0.0059F;
+ af[6] = 0.0086F;
+ af[7] = 0.0119F;
+ af[8] = 0.0157F;
+ af[9] = 0.0209F;
+ af[10] = 0.0257F;
+ af[11] = 0.0321F;
+ af[12] = 0.0392F;
+ af[13] = 0.0469F;
+ af[14] = 0.0566F;
+ af[15] = 0.0656F;
+ af[16] = 0.0768F;
+ af[17] = 0.0887F;
+ af[18] = 0.1033F;
+ af[19] = 0.1186F;
+ af[20] = 0.1349F;
+ af[21] = 0.1519F;
+ af[22] = 0.1696F;
+ af[23] = 0.1928F;
+ af[24] = 0.2121F;
+ af[25] = 0.237F;
+ af[26] = 0.2627F;
+ af[27] = 0.2892F;
+ af[28] = 0.3109F;
+ af[29] = 0.3386F;
+ af[30] = 0.3667F;
+ af[31] = 0.3952F;
+ af[32] = 0.4241F;
+ af[33] = 0.4474F;
+ af[34] = 0.4766F;
+ af[35] = 0.5F;
+ af[36] = 0.5234F;
+ af[37] = 0.5468F;
+ af[38] = 0.5701F;
+ af[39] = 0.5933F;
+ af[40] = 0.6134F;
+ af[41] = 0.6333F;
+ af[42] = 0.6531F;
+ af[43] = 0.6698F;
+ af[44] = 0.6891F;
+ af[45] = 0.7054F;
+ af[46] = 0.7214F;
+ af[47] = 0.7346F;
+ af[48] = 0.7502F;
+ af[49] = 0.763F;
+ af[50] = 0.7756F;
+ af[51] = 0.7879F;
+ af[52] = 0.8F;
+ af[53] = 0.8107F;
+ af[54] = 0.8212F;
+ af[55] = 0.8326F;
+ af[56] = 0.8415F;
+ af[57] = 0.8503F;
+ af[58] = 0.8588F;
+ af[59] = 0.8672F;
+ af[60] = 0.8754F;
+ af[61] = 0.8833F;
+ af[62] = 0.8911F;
+ af[63] = 0.8977F;
+ af[64] = 0.9041F;
+ af[65] = 0.9113F;
+ af[66] = 0.9165F;
+ af[67] = 0.9232F;
+ af[68] = 0.9281F;
+ af[69] = 0.9328F;
+ af[70] = 0.9382F;
+ af[71] = 0.9434F;
+ af[72] = 0.9476F;
+ af[73] = 0.9518F;
+ af[74] = 0.9557F;
+ af[75] = 0.9596F;
+ af[76] = 0.9632F;
+ af[77] = 0.9662F;
+ af[78] = 0.9695F;
+ af[79] = 0.9722F;
+ af[80] = 0.9753F;
+ af[81] = 0.9777F;
+ af[82] = 0.9805F;
+ af[83] = 0.9826F;
+ af[84] = 0.9847F;
+ af[85] = 0.9866F;
+ af[86] = 0.9884F;
+ af[87] = 0.9901F;
+ af[88] = 0.9917F;
+ af[89] = 0.9931F;
+ af[90] = 0.9944F;
+ af[91] = 0.9955F;
+ af[92] = 0.9964F;
+ af[93] = 0.9973F;
+ af[94] = 0.9981F;
+ af[95] = 0.9986F;
+ af[96] = 0.9992F;
+ af[97] = 0.9995F;
+ af[98] = 0.9998F;
+ af[99] = 1.0F;
+ af[100] = 1.0F;
+ VALUES = af;
+ STEP_SIZE = 1.0F / (float)(-1 + VALUES.length);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/CircleImageView.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/CircleImageView.java
new file mode 100644
index 0000000..f856d38
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/CircleImageView.java
@@ -0,0 +1,144 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.*;
+import android.graphics.drawable.ShapeDrawable;
+import android.graphics.drawable.shapes.OvalShape;
+import android.support.v4.view.ViewCompat;
+import android.util.DisplayMetrics;
+import android.widget.ImageView;
+
+class CircleImageView extends ImageView
+{
+ private class OvalShadow extends OvalShape
+ {
+
+ public void draw(Canvas canvas, Paint paint)
+ {
+ int i = getWidth();
+ int j = getHeight();
+ canvas.drawCircle(i / 2, j / 2, mCircleDiameter / 2 + mShadowRadius, mShadowPaint);
+ canvas.drawCircle(i / 2, j / 2, mCircleDiameter / 2, paint);
+ }
+
+ private int mCircleDiameter;
+ private RadialGradient mRadialGradient;
+ private Paint mShadowPaint;
+ final CircleImageView this$0;
+
+ public OvalShadow(int i, int j)
+ {
+ this$0 = CircleImageView.this;
+ super();
+ mShadowPaint = new Paint();
+ mShadowRadius = i;
+ mCircleDiameter = j;
+ float f = mCircleDiameter / 2;
+ float f1 = mCircleDiameter / 2;
+ float f2 = mShadowRadius;
+ int ai[] = new int[2];
+ ai[0] = 0x3d000000;
+ ai[1] = 0;
+ mRadialGradient = new RadialGradient(f, f1, f2, ai, null, android.graphics.Shader.TileMode.CLAMP);
+ mShadowPaint.setShader(mRadialGradient);
+ }
+ }
+
+
+ public CircleImageView(Context context, int i, float f)
+ {
+ super(context);
+ float f1 = getContext().getResources().getDisplayMetrics().density;
+ int j = (int)(2.0F * (f * f1));
+ int k = (int)(1.75F * f1);
+ int l = (int)(0.0F * f1);
+ mShadowRadius = (int)(3.5F * f1);
+ ShapeDrawable shapedrawable;
+ if(elevationSupported())
+ {
+ shapedrawable = new ShapeDrawable(new OvalShape());
+ ViewCompat.setElevation(this, 4F * f1);
+ } else
+ {
+ shapedrawable = new ShapeDrawable(new OvalShadow(mShadowRadius, j));
+ ViewCompat.setLayerType(this, 1, shapedrawable.getPaint());
+ shapedrawable.getPaint().setShadowLayer(mShadowRadius, l, k, 0x1e000000);
+ int i1 = mShadowRadius;
+ setPadding(i1, i1, i1, i1);
+ }
+ shapedrawable.getPaint().setColor(i);
+ setBackgroundDrawable(shapedrawable);
+ }
+
+ private boolean elevationSupported()
+ {
+ boolean flag;
+ if(android.os.Build.VERSION.SDK_INT >= 21)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ public void onAnimationEnd()
+ {
+ super.onAnimationEnd();
+ if(mListener != null)
+ mListener.onAnimationEnd(getAnimation());
+ }
+
+ public void onAnimationStart()
+ {
+ super.onAnimationStart();
+ if(mListener != null)
+ mListener.onAnimationStart(getAnimation());
+ }
+
+ protected void onMeasure(int i, int j)
+ {
+ super.onMeasure(i, j);
+ if(!elevationSupported())
+ setMeasuredDimension(getMeasuredWidth() + 2 * mShadowRadius, getMeasuredHeight() + 2 * mShadowRadius);
+ }
+
+ public void setAnimationListener(android.view.animation.Animation.AnimationListener animationlistener)
+ {
+ mListener = animationlistener;
+ }
+
+ public void setBackgroundColor(int i)
+ {
+ if(getBackground() instanceof ShapeDrawable)
+ ((ShapeDrawable)getBackground()).getPaint().setColor(i);
+ }
+
+ public void setBackgroundColorRes(int i)
+ {
+ setBackgroundColor(getContext().getResources().getColor(i));
+ }
+
+ private static final int FILL_SHADOW_COLOR = 0x3d000000;
+ private static final int KEY_SHADOW_COLOR = 0x1e000000;
+ private static final int SHADOW_ELEVATION = 4;
+ private static final float SHADOW_RADIUS = 3.5F;
+ private static final float X_OFFSET = 0F;
+ private static final float Y_OFFSET = 1.75F;
+ private android.view.animation.Animation.AnimationListener mListener;
+ private int mShadowRadius;
+
+
+
+/*
+ static int access$002(CircleImageView circleimageview, int i)
+ {
+ circleimageview.mShadowRadius = i;
+ return i;
+ }
+
+*/
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/ContentLoadingProgressBar.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/ContentLoadingProgressBar.java
new file mode 100644
index 0000000..7f55d13
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/ContentLoadingProgressBar.java
@@ -0,0 +1,157 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.widget.ProgressBar;
+
+public class ContentLoadingProgressBar extends ProgressBar
+{
+
+ public ContentLoadingProgressBar(Context context)
+ {
+ this(context, null);
+ }
+
+ public ContentLoadingProgressBar(Context context, AttributeSet attributeset)
+ {
+ super(context, attributeset, 0);
+ mStartTime = -1L;
+ mPostedHide = false;
+ mPostedShow = false;
+ mDismissed = false;
+ mDelayedHide = new Runnable() {
+
+ public void run()
+ {
+ mPostedHide = false;
+ mStartTime = -1L;
+ setVisibility(8);
+ }
+
+ final ContentLoadingProgressBar this$0;
+
+
+ {
+ this$0 = ContentLoadingProgressBar.this;
+ super();
+ }
+ }
+;
+ mDelayedShow = new Runnable() {
+
+ public void run()
+ {
+ mPostedShow = false;
+ if(!mDismissed)
+ {
+ mStartTime = System.currentTimeMillis();
+ setVisibility(0);
+ }
+ }
+
+ final ContentLoadingProgressBar this$0;
+
+
+ {
+ this$0 = ContentLoadingProgressBar.this;
+ super();
+ }
+ }
+;
+ }
+
+ private void removeCallbacks()
+ {
+ removeCallbacks(mDelayedHide);
+ removeCallbacks(mDelayedShow);
+ }
+
+ public void hide()
+ {
+ long l;
+ mDismissed = true;
+ removeCallbacks(mDelayedShow);
+ l = System.currentTimeMillis() - mStartTime;
+ if(l < 500L && mStartTime != -1L) goto _L2; else goto _L1
+_L1:
+ setVisibility(8);
+_L4:
+ return;
+_L2:
+ if(!mPostedHide)
+ {
+ postDelayed(mDelayedHide, 500L - l);
+ mPostedHide = true;
+ }
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ public void onAttachedToWindow()
+ {
+ super.onAttachedToWindow();
+ removeCallbacks();
+ }
+
+ public void onDetachedFromWindow()
+ {
+ super.onDetachedFromWindow();
+ removeCallbacks();
+ }
+
+ public void show()
+ {
+ mStartTime = -1L;
+ mDismissed = false;
+ removeCallbacks(mDelayedHide);
+ if(!mPostedShow)
+ {
+ postDelayed(mDelayedShow, 500L);
+ mPostedShow = true;
+ }
+ }
+
+ private static final int MIN_DELAY = 500;
+ private static final int MIN_SHOW_TIME = 500;
+ private final Runnable mDelayedHide;
+ private final Runnable mDelayedShow;
+ private boolean mDismissed;
+ private boolean mPostedHide;
+ private boolean mPostedShow;
+ private long mStartTime;
+
+
+/*
+ static boolean access$002(ContentLoadingProgressBar contentloadingprogressbar, boolean flag)
+ {
+ contentloadingprogressbar.mPostedHide = flag;
+ return flag;
+ }
+
+*/
+
+
+/*
+ static long access$102(ContentLoadingProgressBar contentloadingprogressbar, long l)
+ {
+ contentloadingprogressbar.mStartTime = l;
+ return l;
+ }
+
+*/
+
+
+/*
+ static boolean access$202(ContentLoadingProgressBar contentloadingprogressbar, boolean flag)
+ {
+ contentloadingprogressbar.mPostedShow = flag;
+ return flag;
+ }
+
+*/
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/CursorAdapter.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/CursorAdapter.java
new file mode 100644
index 0000000..d40ba02
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/CursorAdapter.java
@@ -0,0 +1,319 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+import android.content.Context;
+import android.database.*;
+import android.os.Handler;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.*;
+
+// Referenced classes of package android.support.v4.widget:
+// CursorFilter
+
+public abstract class CursorAdapter extends BaseAdapter
+ implements Filterable, CursorFilter.CursorFilterClient
+{
+ private class MyDataSetObserver extends DataSetObserver
+ {
+
+ public void onChanged()
+ {
+ mDataValid = true;
+ notifyDataSetChanged();
+ }
+
+ public void onInvalidated()
+ {
+ mDataValid = false;
+ notifyDataSetInvalidated();
+ }
+
+ final CursorAdapter this$0;
+
+ private MyDataSetObserver()
+ {
+ this$0 = CursorAdapter.this;
+ super();
+ }
+
+ }
+
+ private class ChangeObserver extends ContentObserver
+ {
+
+ public boolean deliverSelfNotifications()
+ {
+ return true;
+ }
+
+ public void onChange(boolean flag)
+ {
+ onContentChanged();
+ }
+
+ final CursorAdapter this$0;
+
+ public ChangeObserver()
+ {
+ this$0 = CursorAdapter.this;
+ super(new Handler());
+ }
+ }
+
+
+ public CursorAdapter(Context context, Cursor cursor)
+ {
+ init(context, cursor, 1);
+ }
+
+ public CursorAdapter(Context context, Cursor cursor, int i)
+ {
+ init(context, cursor, i);
+ }
+
+ public CursorAdapter(Context context, Cursor cursor, boolean flag)
+ {
+ int i;
+ if(flag)
+ i = 1;
+ else
+ i = 2;
+ init(context, cursor, i);
+ }
+
+ public abstract void bindView(View view, Context context, Cursor cursor);
+
+ public void changeCursor(Cursor cursor)
+ {
+ Cursor cursor1 = swapCursor(cursor);
+ if(cursor1 != null)
+ cursor1.close();
+ }
+
+ public CharSequence convertToString(Cursor cursor)
+ {
+ String s;
+ if(cursor == null)
+ s = "";
+ else
+ s = cursor.toString();
+ return s;
+ }
+
+ public int getCount()
+ {
+ int i;
+ if(mDataValid && mCursor != null)
+ i = mCursor.getCount();
+ else
+ i = 0;
+ return i;
+ }
+
+ public Cursor getCursor()
+ {
+ return mCursor;
+ }
+
+ public View getDropDownView(int i, View view, ViewGroup viewgroup)
+ {
+ View view1;
+ if(mDataValid)
+ {
+ mCursor.moveToPosition(i);
+ if(view == null)
+ view1 = newDropDownView(mContext, mCursor, viewgroup);
+ else
+ view1 = view;
+ bindView(view1, mContext, mCursor);
+ } else
+ {
+ view1 = null;
+ }
+ return view1;
+ }
+
+ public Filter getFilter()
+ {
+ if(mCursorFilter == null)
+ mCursorFilter = new CursorFilter(this);
+ return mCursorFilter;
+ }
+
+ public FilterQueryProvider getFilterQueryProvider()
+ {
+ return mFilterQueryProvider;
+ }
+
+ public Object getItem(int i)
+ {
+ Cursor cursor;
+ if(mDataValid && mCursor != null)
+ {
+ mCursor.moveToPosition(i);
+ cursor = mCursor;
+ } else
+ {
+ cursor = null;
+ }
+ return cursor;
+ }
+
+ public long getItemId(int i)
+ {
+ long l = 0L;
+ if(mDataValid && mCursor != null && mCursor.moveToPosition(i))
+ l = mCursor.getLong(mRowIDColumn);
+ return l;
+ }
+
+ public View getView(int i, View view, ViewGroup viewgroup)
+ {
+ if(!mDataValid)
+ throw new IllegalStateException("this should only be called when the cursor is valid");
+ if(!mCursor.moveToPosition(i))
+ throw new IllegalStateException((new StringBuilder()).append("couldn't move cursor to position ").append(i).toString());
+ View view1;
+ if(view == null)
+ view1 = newView(mContext, mCursor, viewgroup);
+ else
+ view1 = view;
+ bindView(view1, mContext, mCursor);
+ return view1;
+ }
+
+ public boolean hasStableIds()
+ {
+ return true;
+ }
+
+ void init(Context context, Cursor cursor, int i)
+ {
+ boolean flag = true;
+ int j;
+ if((i & 1) == flag)
+ {
+ i |= 2;
+ mAutoRequery = flag;
+ } else
+ {
+ mAutoRequery = false;
+ }
+ if(cursor == null)
+ flag = false;
+ mCursor = cursor;
+ mDataValid = flag;
+ mContext = context;
+ if(flag)
+ j = cursor.getColumnIndexOrThrow("_id");
+ else
+ j = -1;
+ mRowIDColumn = j;
+ if((i & 2) == 2)
+ {
+ mChangeObserver = new ChangeObserver();
+ mDataSetObserver = new MyDataSetObserver();
+ } else
+ {
+ mChangeObserver = null;
+ mDataSetObserver = null;
+ }
+ if(flag)
+ {
+ if(mChangeObserver != null)
+ cursor.registerContentObserver(mChangeObserver);
+ if(mDataSetObserver != null)
+ cursor.registerDataSetObserver(mDataSetObserver);
+ }
+ }
+
+ protected void init(Context context, Cursor cursor, boolean flag)
+ {
+ int i;
+ if(flag)
+ i = 1;
+ else
+ i = 2;
+ init(context, cursor, i);
+ }
+
+ public View newDropDownView(Context context, Cursor cursor, ViewGroup viewgroup)
+ {
+ return newView(context, cursor, viewgroup);
+ }
+
+ public abstract View newView(Context context, Cursor cursor, ViewGroup viewgroup);
+
+ protected void onContentChanged()
+ {
+ if(mAutoRequery && mCursor != null && !mCursor.isClosed())
+ mDataValid = mCursor.requery();
+ }
+
+ public Cursor runQueryOnBackgroundThread(CharSequence charsequence)
+ {
+ Cursor cursor;
+ if(mFilterQueryProvider != null)
+ cursor = mFilterQueryProvider.runQuery(charsequence);
+ else
+ cursor = mCursor;
+ return cursor;
+ }
+
+ public void setFilterQueryProvider(FilterQueryProvider filterqueryprovider)
+ {
+ mFilterQueryProvider = filterqueryprovider;
+ }
+
+ public Cursor swapCursor(Cursor cursor)
+ {
+ Cursor cursor1;
+ if(cursor == mCursor)
+ {
+ cursor1 = null;
+ } else
+ {
+ cursor1 = mCursor;
+ if(cursor1 != null)
+ {
+ if(mChangeObserver != null)
+ cursor1.unregisterContentObserver(mChangeObserver);
+ if(mDataSetObserver != null)
+ cursor1.unregisterDataSetObserver(mDataSetObserver);
+ }
+ mCursor = cursor;
+ if(cursor != null)
+ {
+ if(mChangeObserver != null)
+ cursor.registerContentObserver(mChangeObserver);
+ if(mDataSetObserver != null)
+ cursor.registerDataSetObserver(mDataSetObserver);
+ mRowIDColumn = cursor.getColumnIndexOrThrow("_id");
+ mDataValid = true;
+ notifyDataSetChanged();
+ } else
+ {
+ mRowIDColumn = -1;
+ mDataValid = false;
+ notifyDataSetInvalidated();
+ }
+ }
+ return cursor1;
+ }
+
+ public static final int FLAG_AUTO_REQUERY = 1;
+ public static final int FLAG_REGISTER_CONTENT_OBSERVER = 2;
+ protected boolean mAutoRequery;
+ protected ChangeObserver mChangeObserver;
+ protected Context mContext;
+ protected Cursor mCursor;
+ protected CursorFilter mCursorFilter;
+ protected DataSetObserver mDataSetObserver;
+ protected boolean mDataValid;
+ protected FilterQueryProvider mFilterQueryProvider;
+ protected int mRowIDColumn;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/CursorFilter.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/CursorFilter.java
new file mode 100644
index 0000000..61d3045
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/CursorFilter.java
@@ -0,0 +1,59 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+import android.database.Cursor;
+import android.widget.Filter;
+
+class CursorFilter extends Filter
+{
+ static interface CursorFilterClient
+ {
+
+ public abstract void changeCursor(Cursor cursor);
+
+ public abstract CharSequence convertToString(Cursor cursor);
+
+ public abstract Cursor getCursor();
+
+ public abstract Cursor runQueryOnBackgroundThread(CharSequence charsequence);
+ }
+
+
+ CursorFilter(CursorFilterClient cursorfilterclient)
+ {
+ mClient = cursorfilterclient;
+ }
+
+ public CharSequence convertResultToString(Object obj)
+ {
+ return mClient.convertToString((Cursor)obj);
+ }
+
+ protected android.widget.Filter.FilterResults performFiltering(CharSequence charsequence)
+ {
+ Cursor cursor = mClient.runQueryOnBackgroundThread(charsequence);
+ android.widget.Filter.FilterResults filterresults = new android.widget.Filter.FilterResults();
+ if(cursor != null)
+ {
+ filterresults.count = cursor.getCount();
+ filterresults.values = cursor;
+ } else
+ {
+ filterresults.count = 0;
+ filterresults.values = null;
+ }
+ return filterresults;
+ }
+
+ protected void publishResults(CharSequence charsequence, android.widget.Filter.FilterResults filterresults)
+ {
+ Cursor cursor = mClient.getCursor();
+ if(filterresults.values != null && filterresults.values != cursor)
+ mClient.changeCursor((Cursor)filterresults.values);
+ }
+
+ CursorFilterClient mClient;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/DrawerLayout.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/DrawerLayout.java
new file mode 100644
index 0000000..9264630
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/DrawerLayout.java
@@ -0,0 +1,1786 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.content.res.TypedArray;
+import android.graphics.*;
+import android.graphics.drawable.ColorDrawable;
+import android.graphics.drawable.Drawable;
+import android.os.*;
+import android.support.v4.content.ContextCompat;
+import android.support.v4.view.*;
+import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
+import android.util.AttributeSet;
+import android.util.DisplayMetrics;
+import android.view.*;
+import android.view.accessibility.AccessibilityEvent;
+import java.lang.annotation.Annotation;
+import java.util.List;
+
+// Referenced classes of package android.support.v4.widget:
+// DrawerLayoutImpl, ViewDragHelper, DrawerLayoutCompatApi21
+
+public class DrawerLayout extends ViewGroup
+ implements DrawerLayoutImpl
+{
+ final class ChildAccessibilityDelegate extends AccessibilityDelegateCompat
+ {
+
+ public void onInitializeAccessibilityNodeInfo(View view, AccessibilityNodeInfoCompat accessibilitynodeinfocompat)
+ {
+ super.onInitializeAccessibilityNodeInfo(view, accessibilitynodeinfocompat);
+ if(!DrawerLayout.includeChildForAccessibility(view))
+ accessibilitynodeinfocompat.setParent(null);
+ }
+
+ final DrawerLayout this$0;
+
+ ChildAccessibilityDelegate()
+ {
+ this$0 = DrawerLayout.this;
+ super();
+ }
+ }
+
+ class AccessibilityDelegate extends AccessibilityDelegateCompat
+ {
+
+ private void addChildrenForAccessibility(AccessibilityNodeInfoCompat accessibilitynodeinfocompat, ViewGroup viewgroup)
+ {
+ int i = viewgroup.getChildCount();
+ for(int j = 0; j < i; j++)
+ {
+ View view = viewgroup.getChildAt(j);
+ if(DrawerLayout.includeChildForAccessibility(view))
+ accessibilitynodeinfocompat.addChild(view);
+ }
+
+ }
+
+ private void copyNodeInfoNoChildren(AccessibilityNodeInfoCompat accessibilitynodeinfocompat, AccessibilityNodeInfoCompat accessibilitynodeinfocompat1)
+ {
+ Rect rect = mTmpRect;
+ accessibilitynodeinfocompat1.getBoundsInParent(rect);
+ accessibilitynodeinfocompat.setBoundsInParent(rect);
+ accessibilitynodeinfocompat1.getBoundsInScreen(rect);
+ accessibilitynodeinfocompat.setBoundsInScreen(rect);
+ accessibilitynodeinfocompat.setVisibleToUser(accessibilitynodeinfocompat1.isVisibleToUser());
+ accessibilitynodeinfocompat.setPackageName(accessibilitynodeinfocompat1.getPackageName());
+ accessibilitynodeinfocompat.setClassName(accessibilitynodeinfocompat1.getClassName());
+ accessibilitynodeinfocompat.setContentDescription(accessibilitynodeinfocompat1.getContentDescription());
+ accessibilitynodeinfocompat.setEnabled(accessibilitynodeinfocompat1.isEnabled());
+ accessibilitynodeinfocompat.setClickable(accessibilitynodeinfocompat1.isClickable());
+ accessibilitynodeinfocompat.setFocusable(accessibilitynodeinfocompat1.isFocusable());
+ accessibilitynodeinfocompat.setFocused(accessibilitynodeinfocompat1.isFocused());
+ accessibilitynodeinfocompat.setAccessibilityFocused(accessibilitynodeinfocompat1.isAccessibilityFocused());
+ accessibilitynodeinfocompat.setSelected(accessibilitynodeinfocompat1.isSelected());
+ accessibilitynodeinfocompat.setLongClickable(accessibilitynodeinfocompat1.isLongClickable());
+ accessibilitynodeinfocompat.addAction(accessibilitynodeinfocompat1.getActions());
+ }
+
+ public boolean dispatchPopulateAccessibilityEvent(View view, AccessibilityEvent accessibilityevent)
+ {
+ boolean flag;
+ if(accessibilityevent.getEventType() == 32)
+ {
+ List list = accessibilityevent.getText();
+ View view1 = findVisibleDrawer();
+ if(view1 != null)
+ {
+ int i = getDrawerViewAbsoluteGravity(view1);
+ CharSequence charsequence = getDrawerTitle(i);
+ if(charsequence != null)
+ list.add(charsequence);
+ }
+ flag = true;
+ } else
+ {
+ flag = super.dispatchPopulateAccessibilityEvent(view, accessibilityevent);
+ }
+ return flag;
+ }
+
+ public void onInitializeAccessibilityEvent(View view, AccessibilityEvent accessibilityevent)
+ {
+ super.onInitializeAccessibilityEvent(view, accessibilityevent);
+ accessibilityevent.setClassName(android/support/v4/widget/DrawerLayout.getName());
+ }
+
+ public void onInitializeAccessibilityNodeInfo(View view, AccessibilityNodeInfoCompat accessibilitynodeinfocompat)
+ {
+ if(DrawerLayout.CAN_HIDE_DESCENDANTS)
+ {
+ super.onInitializeAccessibilityNodeInfo(view, accessibilitynodeinfocompat);
+ } else
+ {
+ AccessibilityNodeInfoCompat accessibilitynodeinfocompat1 = AccessibilityNodeInfoCompat.obtain(accessibilitynodeinfocompat);
+ super.onInitializeAccessibilityNodeInfo(view, accessibilitynodeinfocompat1);
+ accessibilitynodeinfocompat.setSource(view);
+ android.view.ViewParent viewparent = ViewCompat.getParentForAccessibility(view);
+ if(viewparent instanceof View)
+ accessibilitynodeinfocompat.setParent((View)viewparent);
+ copyNodeInfoNoChildren(accessibilitynodeinfocompat, accessibilitynodeinfocompat1);
+ accessibilitynodeinfocompat1.recycle();
+ addChildrenForAccessibility(accessibilitynodeinfocompat, (ViewGroup)view);
+ }
+ accessibilitynodeinfocompat.setClassName(android/support/v4/widget/DrawerLayout.getName());
+ accessibilitynodeinfocompat.setFocusable(false);
+ accessibilitynodeinfocompat.setFocused(false);
+ }
+
+ public boolean onRequestSendAccessibilityEvent(ViewGroup viewgroup, View view, AccessibilityEvent accessibilityevent)
+ {
+ boolean flag;
+ if(DrawerLayout.CAN_HIDE_DESCENDANTS || DrawerLayout.includeChildForAccessibility(view))
+ flag = super.onRequestSendAccessibilityEvent(viewgroup, view, accessibilityevent);
+ else
+ flag = false;
+ return flag;
+ }
+
+ private final Rect mTmpRect = new Rect();
+ final DrawerLayout this$0;
+
+ AccessibilityDelegate()
+ {
+ this$0 = DrawerLayout.this;
+ super();
+ }
+ }
+
+ public static class LayoutParams extends android.view.ViewGroup.MarginLayoutParams
+ {
+
+ public int gravity;
+ boolean isPeeking;
+ boolean knownOpen;
+ float onScreen;
+
+ public LayoutParams(int i, int j)
+ {
+ super(i, j);
+ gravity = 0;
+ }
+
+ public LayoutParams(int i, int j, int k)
+ {
+ this(i, j);
+ gravity = k;
+ }
+
+ public LayoutParams(Context context, AttributeSet attributeset)
+ {
+ super(context, attributeset);
+ gravity = 0;
+ TypedArray typedarray = context.obtainStyledAttributes(attributeset, DrawerLayout.LAYOUT_ATTRS);
+ gravity = typedarray.getInt(0, 0);
+ typedarray.recycle();
+ }
+
+ public LayoutParams(LayoutParams layoutparams)
+ {
+ super(layoutparams);
+ gravity = 0;
+ gravity = layoutparams.gravity;
+ }
+
+ public LayoutParams(android.view.ViewGroup.LayoutParams layoutparams)
+ {
+ super(layoutparams);
+ gravity = 0;
+ }
+
+ public LayoutParams(android.view.ViewGroup.MarginLayoutParams marginlayoutparams)
+ {
+ super(marginlayoutparams);
+ gravity = 0;
+ }
+ }
+
+ private class ViewDragCallback extends ViewDragHelper.Callback
+ {
+
+ private void closeOtherDrawer()
+ {
+ byte byte0 = 3;
+ if(mAbsGravity == byte0)
+ byte0 = 5;
+ View view = findDrawerWithGravity(byte0);
+ if(view != null)
+ closeDrawer(view);
+ }
+
+ private void peekDrawer()
+ {
+ int i = 0;
+ int j = mDragger.getEdgeSize();
+ boolean flag;
+ View view;
+ int k;
+ if(mAbsGravity == 3)
+ flag = true;
+ else
+ flag = false;
+ if(flag)
+ {
+ view = findDrawerWithGravity(3);
+ if(view != null)
+ i = -view.getWidth();
+ k = i + j;
+ } else
+ {
+ view = findDrawerWithGravity(5);
+ k = getWidth() - j;
+ }
+ if(view != null && (flag && view.getLeft() < k || !flag && view.getLeft() > k) && getDrawerLockMode(view) == 0)
+ {
+ LayoutParams layoutparams = (LayoutParams)view.getLayoutParams();
+ mDragger.smoothSlideViewTo(view, k, view.getTop());
+ layoutparams.isPeeking = true;
+ invalidate();
+ closeOtherDrawer();
+ cancelChildViewTouch();
+ }
+ }
+
+ public int clampViewPositionHorizontal(View view, int i, int j)
+ {
+ int l;
+ if(checkDrawerViewAbsoluteGravity(view, 3))
+ {
+ l = Math.max(-view.getWidth(), Math.min(i, 0));
+ } else
+ {
+ int k = getWidth();
+ l = Math.max(k - view.getWidth(), Math.min(i, k));
+ }
+ return l;
+ }
+
+ public int clampViewPositionVertical(View view, int i, int j)
+ {
+ return view.getTop();
+ }
+
+ public int getViewHorizontalDragRange(View view)
+ {
+ int i;
+ if(isDrawerView(view))
+ i = view.getWidth();
+ else
+ i = 0;
+ return i;
+ }
+
+ public void onEdgeDragStarted(int i, int j)
+ {
+ View view;
+ if((i & 1) == 1)
+ view = findDrawerWithGravity(3);
+ else
+ view = findDrawerWithGravity(5);
+ if(view != null && getDrawerLockMode(view) == 0)
+ mDragger.captureChildView(view, j);
+ }
+
+ public boolean onEdgeLock(int i)
+ {
+ return false;
+ }
+
+ public void onEdgeTouched(int i, int j)
+ {
+ postDelayed(mPeekRunnable, 160L);
+ }
+
+ public void onViewCaptured(View view, int i)
+ {
+ ((LayoutParams)view.getLayoutParams()).isPeeking = false;
+ closeOtherDrawer();
+ }
+
+ public void onViewDragStateChanged(int i)
+ {
+ updateDrawerState(mAbsGravity, i, mDragger.getCapturedView());
+ }
+
+ public void onViewPositionChanged(View view, int i, int j, int k, int l)
+ {
+ int i1 = view.getWidth();
+ float f;
+ byte byte0;
+ if(checkDrawerViewAbsoluteGravity(view, 3))
+ f = (float)(i1 + i) / (float)i1;
+ else
+ f = (float)(getWidth() - i) / (float)i1;
+ setDrawerViewOffset(view, f);
+ if(f == 0.0F)
+ byte0 = 4;
+ else
+ byte0 = 0;
+ view.setVisibility(byte0);
+ invalidate();
+ }
+
+ public void onViewReleased(View view, float f, float f1)
+ {
+ float f2 = getDrawerViewOffset(view);
+ int i = view.getWidth();
+ int k;
+ if(checkDrawerViewAbsoluteGravity(view, 3))
+ {
+ if(f > 0.0F || f == 0.0F && f2 > 0.5F)
+ k = 0;
+ else
+ k = -i;
+ } else
+ {
+ int j = getWidth();
+ if(f < 0.0F || f == 0.0F && f2 > 0.5F)
+ k = j - i;
+ else
+ k = j;
+ }
+ mDragger.settleCapturedViewAt(k, view.getTop());
+ invalidate();
+ }
+
+ public void removeCallbacks()
+ {
+ DrawerLayout.this.removeCallbacks(mPeekRunnable);
+ }
+
+ public void setDragger(ViewDragHelper viewdraghelper)
+ {
+ mDragger = viewdraghelper;
+ }
+
+ public boolean tryCaptureView(View view, int i)
+ {
+ boolean flag;
+ if(isDrawerView(view) && checkDrawerViewAbsoluteGravity(view, mAbsGravity) && getDrawerLockMode(view) == 0)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ private final int mAbsGravity;
+ private ViewDragHelper mDragger;
+ private final Runnable mPeekRunnable = new Runnable() {
+
+ public void run()
+ {
+ peekDrawer();
+ }
+
+ final ViewDragCallback this$1;
+
+
+ {
+ this$1 = ViewDragCallback.this;
+ super();
+ }
+ }
+;
+ final DrawerLayout this$0;
+
+
+ public ViewDragCallback(int i)
+ {
+ this$0 = DrawerLayout.this;
+ super();
+ mAbsGravity = i;
+ }
+ }
+
+ protected static class SavedState extends android.view.View.BaseSavedState
+ {
+
+ public void writeToParcel(Parcel parcel, int i)
+ {
+ super.writeToParcel(parcel, i);
+ parcel.writeInt(openDrawerGravity);
+ }
+
+ public static final android.os.Parcelable.Creator CREATOR = new android.os.Parcelable.Creator() {
+
+ public SavedState createFromParcel(Parcel parcel)
+ {
+ return new SavedState(parcel);
+ }
+
+ public volatile Object createFromParcel(Parcel parcel)
+ {
+ return createFromParcel(parcel);
+ }
+
+ public SavedState[] newArray(int i)
+ {
+ return new SavedState[i];
+ }
+
+ public volatile Object[] newArray(int i)
+ {
+ return newArray(i);
+ }
+
+ }
+;
+ int lockModeLeft;
+ int lockModeRight;
+ int openDrawerGravity;
+
+
+ public SavedState(Parcel parcel)
+ {
+ super(parcel);
+ openDrawerGravity = 0;
+ lockModeLeft = 0;
+ lockModeRight = 0;
+ openDrawerGravity = parcel.readInt();
+ }
+
+ public SavedState(Parcelable parcelable)
+ {
+ super(parcelable);
+ openDrawerGravity = 0;
+ lockModeLeft = 0;
+ lockModeRight = 0;
+ }
+ }
+
+ static class DrawerLayoutCompatImplApi21
+ implements DrawerLayoutCompatImpl
+ {
+
+ public void applyMarginInsets(android.view.ViewGroup.MarginLayoutParams marginlayoutparams, Object obj, int i)
+ {
+ DrawerLayoutCompatApi21.applyMarginInsets(marginlayoutparams, obj, i);
+ }
+
+ public void configureApplyInsets(View view)
+ {
+ DrawerLayoutCompatApi21.configureApplyInsets(view);
+ }
+
+ public void dispatchChildInsets(View view, Object obj, int i)
+ {
+ DrawerLayoutCompatApi21.dispatchChildInsets(view, obj, i);
+ }
+
+ public Drawable getDefaultStatusBarBackground(Context context)
+ {
+ return DrawerLayoutCompatApi21.getDefaultStatusBarBackground(context);
+ }
+
+ public int getTopInset(Object obj)
+ {
+ return DrawerLayoutCompatApi21.getTopInset(obj);
+ }
+
+ DrawerLayoutCompatImplApi21()
+ {
+ }
+ }
+
+ static class DrawerLayoutCompatImplBase
+ implements DrawerLayoutCompatImpl
+ {
+
+ public void applyMarginInsets(android.view.ViewGroup.MarginLayoutParams marginlayoutparams, Object obj, int i)
+ {
+ }
+
+ public void configureApplyInsets(View view)
+ {
+ }
+
+ public void dispatchChildInsets(View view, Object obj, int i)
+ {
+ }
+
+ public Drawable getDefaultStatusBarBackground(Context context)
+ {
+ return null;
+ }
+
+ public int getTopInset(Object obj)
+ {
+ return 0;
+ }
+
+ DrawerLayoutCompatImplBase()
+ {
+ }
+ }
+
+ static interface DrawerLayoutCompatImpl
+ {
+
+ public abstract void applyMarginInsets(android.view.ViewGroup.MarginLayoutParams marginlayoutparams, Object obj, int i);
+
+ public abstract void configureApplyInsets(View view);
+
+ public abstract void dispatchChildInsets(View view, Object obj, int i);
+
+ public abstract Drawable getDefaultStatusBarBackground(Context context);
+
+ public abstract int getTopInset(Object obj);
+ }
+
+ public static abstract class SimpleDrawerListener
+ implements DrawerListener
+ {
+
+ public void onDrawerClosed(View view)
+ {
+ }
+
+ public void onDrawerOpened(View view)
+ {
+ }
+
+ public void onDrawerSlide(View view, float f)
+ {
+ }
+
+ public void onDrawerStateChanged(int i)
+ {
+ }
+
+ public SimpleDrawerListener()
+ {
+ }
+ }
+
+ public static interface DrawerListener
+ {
+
+ public abstract void onDrawerClosed(View view);
+
+ public abstract void onDrawerOpened(View view);
+
+ public abstract void onDrawerSlide(View view, float f);
+
+ public abstract void onDrawerStateChanged(int i);
+ }
+
+ private static interface EdgeGravity
+ extends Annotation
+ {
+ }
+
+ private static interface LockMode
+ extends Annotation
+ {
+ }
+
+ private static interface State
+ extends Annotation
+ {
+ }
+
+
+ public DrawerLayout(Context context)
+ {
+ this(context, null);
+ }
+
+ public DrawerLayout(Context context, AttributeSet attributeset)
+ {
+ this(context, attributeset, 0);
+ }
+
+ public DrawerLayout(Context context, AttributeSet attributeset, int i)
+ {
+ super(context, attributeset, i);
+ mChildAccessibilityDelegate = new ChildAccessibilityDelegate();
+ mScrimColor = 0x99000000;
+ mScrimPaint = new Paint();
+ mFirstLayout = true;
+ setDescendantFocusability(0x40000);
+ float f = getResources().getDisplayMetrics().density;
+ mMinDrawerMargin = (int)(0.5F + 64F * f);
+ float f1 = 400F * f;
+ mLeftCallback = new ViewDragCallback(3);
+ mRightCallback = new ViewDragCallback(5);
+ mLeftDragger = ViewDragHelper.create(this, 1.0F, mLeftCallback);
+ mLeftDragger.setEdgeTrackingEnabled(1);
+ mLeftDragger.setMinVelocity(f1);
+ mLeftCallback.setDragger(mLeftDragger);
+ mRightDragger = ViewDragHelper.create(this, 1.0F, mRightCallback);
+ mRightDragger.setEdgeTrackingEnabled(2);
+ mRightDragger.setMinVelocity(f1);
+ mRightCallback.setDragger(mRightDragger);
+ setFocusableInTouchMode(true);
+ ViewCompat.setImportantForAccessibility(this, 1);
+ ViewCompat.setAccessibilityDelegate(this, new AccessibilityDelegate());
+ ViewGroupCompat.setMotionEventSplittingEnabled(this, false);
+ if(ViewCompat.getFitsSystemWindows(this))
+ {
+ IMPL.configureApplyInsets(this);
+ mStatusBarBackground = IMPL.getDefaultStatusBarBackground(context);
+ }
+ }
+
+ private View findVisibleDrawer()
+ {
+ int i;
+ int j;
+ i = getChildCount();
+ j = 0;
+_L3:
+ View view;
+ if(j >= i)
+ break MISSING_BLOCK_LABEL_42;
+ view = getChildAt(j);
+ if(!isDrawerView(view) || !isDrawerVisible(view)) goto _L2; else goto _L1
+_L1:
+ return view;
+_L2:
+ j++;
+ goto _L3
+ view = null;
+ goto _L1
+ }
+
+ static String gravityToString(int i)
+ {
+ String s;
+ if((i & 3) == 3)
+ s = "LEFT";
+ else
+ if((i & 5) == 5)
+ s = "RIGHT";
+ else
+ s = Integer.toHexString(i);
+ return s;
+ }
+
+ private static boolean hasOpaqueBackground(View view)
+ {
+ boolean flag = false;
+ Drawable drawable = view.getBackground();
+ if(drawable != null && drawable.getOpacity() == -1)
+ flag = true;
+ return flag;
+ }
+
+ private boolean hasPeekingDrawer()
+ {
+ int i;
+ int j;
+ i = getChildCount();
+ j = 0;
+_L3:
+ if(j >= i)
+ break MISSING_BLOCK_LABEL_39;
+ if(!((LayoutParams)getChildAt(j).getLayoutParams()).isPeeking) goto _L2; else goto _L1
+_L1:
+ boolean flag = true;
+_L4:
+ return flag;
+_L2:
+ j++;
+ goto _L3
+ flag = false;
+ goto _L4
+ }
+
+ private boolean hasVisibleDrawer()
+ {
+ boolean flag;
+ if(findVisibleDrawer() != null)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ private static boolean includeChildForAccessibility(View view)
+ {
+ boolean flag;
+ if(ViewCompat.getImportantForAccessibility(view) != 4 && ViewCompat.getImportantForAccessibility(view) != 2)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ private void updateChildrenImportantForAccessibility(View view, boolean flag)
+ {
+ int i = getChildCount();
+ int j = 0;
+ while(j < i)
+ {
+ View view1 = getChildAt(j);
+ if(!flag && !isDrawerView(view1) || flag && view1 == view)
+ ViewCompat.setImportantForAccessibility(view1, 1);
+ else
+ ViewCompat.setImportantForAccessibility(view1, 4);
+ j++;
+ }
+ }
+
+ public void addView(View view, int i, android.view.ViewGroup.LayoutParams layoutparams)
+ {
+ super.addView(view, i, layoutparams);
+ if(findOpenDrawer() != null || isDrawerView(view))
+ ViewCompat.setImportantForAccessibility(view, 4);
+ else
+ ViewCompat.setImportantForAccessibility(view, 1);
+ if(!CAN_HIDE_DESCENDANTS)
+ ViewCompat.setAccessibilityDelegate(view, mChildAccessibilityDelegate);
+ }
+
+ void cancelChildViewTouch()
+ {
+ if(!mChildrenCanceledTouch)
+ {
+ long l = SystemClock.uptimeMillis();
+ MotionEvent motionevent = MotionEvent.obtain(l, l, 3, 0.0F, 0.0F, 0);
+ int i = getChildCount();
+ for(int j = 0; j < i; j++)
+ getChildAt(j).dispatchTouchEvent(motionevent);
+
+ motionevent.recycle();
+ mChildrenCanceledTouch = true;
+ }
+ }
+
+ boolean checkDrawerViewAbsoluteGravity(View view, int i)
+ {
+ boolean flag;
+ if((i & getDrawerViewAbsoluteGravity(view)) == i)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ protected boolean checkLayoutParams(android.view.ViewGroup.LayoutParams layoutparams)
+ {
+ boolean flag;
+ if((layoutparams instanceof LayoutParams) && super.checkLayoutParams(layoutparams))
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ public void closeDrawer(int i)
+ {
+ View view = findDrawerWithGravity(i);
+ if(view == null)
+ {
+ throw new IllegalArgumentException((new StringBuilder()).append("No drawer view found with gravity ").append(gravityToString(i)).toString());
+ } else
+ {
+ closeDrawer(view);
+ return;
+ }
+ }
+
+ public void closeDrawer(View view)
+ {
+ if(!isDrawerView(view))
+ throw new IllegalArgumentException((new StringBuilder()).append("View ").append(view).append(" is not a sliding drawer").toString());
+ if(mFirstLayout)
+ {
+ LayoutParams layoutparams = (LayoutParams)view.getLayoutParams();
+ layoutparams.onScreen = 0.0F;
+ layoutparams.knownOpen = false;
+ } else
+ if(checkDrawerViewAbsoluteGravity(view, 3))
+ mLeftDragger.smoothSlideViewTo(view, -view.getWidth(), view.getTop());
+ else
+ mRightDragger.smoothSlideViewTo(view, getWidth(), view.getTop());
+ invalidate();
+ }
+
+ public void closeDrawers()
+ {
+ closeDrawers(false);
+ }
+
+ void closeDrawers(boolean flag)
+ {
+ boolean flag1 = false;
+ int i = getChildCount();
+ int j = 0;
+ while(j < i)
+ {
+ View view = getChildAt(j);
+ LayoutParams layoutparams = (LayoutParams)view.getLayoutParams();
+ if(isDrawerView(view) && (!flag || layoutparams.isPeeking))
+ {
+ int k = view.getWidth();
+ if(checkDrawerViewAbsoluteGravity(view, 3))
+ flag1 |= mLeftDragger.smoothSlideViewTo(view, -k, view.getTop());
+ else
+ flag1 |= mRightDragger.smoothSlideViewTo(view, getWidth(), view.getTop());
+ layoutparams.isPeeking = false;
+ }
+ j++;
+ }
+ mLeftCallback.removeCallbacks();
+ mRightCallback.removeCallbacks();
+ if(flag1)
+ invalidate();
+ }
+
+ public void computeScroll()
+ {
+ int i = getChildCount();
+ float f = 0.0F;
+ for(int j = 0; j < i; j++)
+ f = Math.max(f, ((LayoutParams)getChildAt(j).getLayoutParams()).onScreen);
+
+ mScrimOpacity = f;
+ if(mLeftDragger.continueSettling(true) | mRightDragger.continueSettling(true))
+ ViewCompat.postInvalidateOnAnimation(this);
+ }
+
+ void dispatchOnDrawerClosed(View view)
+ {
+ LayoutParams layoutparams = (LayoutParams)view.getLayoutParams();
+ if(layoutparams.knownOpen)
+ {
+ layoutparams.knownOpen = false;
+ if(mListener != null)
+ mListener.onDrawerClosed(view);
+ updateChildrenImportantForAccessibility(view, false);
+ if(hasWindowFocus())
+ {
+ View view1 = getRootView();
+ if(view1 != null)
+ view1.sendAccessibilityEvent(32);
+ }
+ }
+ }
+
+ void dispatchOnDrawerOpened(View view)
+ {
+ LayoutParams layoutparams = (LayoutParams)view.getLayoutParams();
+ if(!layoutparams.knownOpen)
+ {
+ layoutparams.knownOpen = true;
+ if(mListener != null)
+ mListener.onDrawerOpened(view);
+ updateChildrenImportantForAccessibility(view, true);
+ if(hasWindowFocus())
+ sendAccessibilityEvent(32);
+ view.requestFocus();
+ }
+ }
+
+ void dispatchOnDrawerSlide(View view, float f)
+ {
+ if(mListener != null)
+ mListener.onDrawerSlide(view, f);
+ }
+
+ protected boolean drawChild(Canvas canvas, View view, long l)
+ {
+ boolean flag;
+ int j;
+ int k;
+ boolean flag1;
+ int i = getHeight();
+ flag = isContentView(view);
+ j = 0;
+ k = getWidth();
+ int i1 = canvas.save();
+ if(flag)
+ {
+ int j3 = getChildCount();
+ int k3 = 0;
+ while(k3 < j3)
+ {
+ View view1 = getChildAt(k3);
+ if(view1 != view && view1.getVisibility() == 0 && hasOpaqueBackground(view1) && isDrawerView(view1) && view1.getHeight() >= i)
+ if(checkDrawerViewAbsoluteGravity(view1, 3))
+ {
+ int i4 = view1.getRight();
+ if(i4 > j)
+ j = i4;
+ } else
+ {
+ int l3 = view1.getLeft();
+ if(l3 < k)
+ k = l3;
+ }
+ k3++;
+ }
+ canvas.clipRect(j, 0, k, getHeight());
+ }
+ flag1 = super.drawChild(canvas, view, l);
+ canvas.restoreToCount(i1);
+ if(mScrimOpacity <= 0.0F || !flag) goto _L2; else goto _L1
+_L1:
+ int i3 = (int)((float)((0xff000000 & mScrimColor) >>> 24) * mScrimOpacity) << 24 | 0xffffff & mScrimColor;
+ mScrimPaint.setColor(i3);
+ canvas.drawRect(j, 0.0F, k, getHeight(), mScrimPaint);
+_L4:
+ return flag1;
+_L2:
+ if(mShadowLeft != null && checkDrawerViewAbsoluteGravity(view, 3))
+ {
+ int j2 = mShadowLeft.getIntrinsicWidth();
+ int k2 = view.getRight();
+ int l2 = mLeftDragger.getEdgeSize();
+ float f1 = Math.max(0.0F, Math.min((float)k2 / (float)l2, 1.0F));
+ mShadowLeft.setBounds(k2, view.getTop(), k2 + j2, view.getBottom());
+ mShadowLeft.setAlpha((int)(255F * f1));
+ mShadowLeft.draw(canvas);
+ } else
+ if(mShadowRight != null && checkDrawerViewAbsoluteGravity(view, 5))
+ {
+ int j1 = mShadowRight.getIntrinsicWidth();
+ int k1 = view.getLeft();
+ int l1 = getWidth() - k1;
+ int i2 = mRightDragger.getEdgeSize();
+ float f = Math.max(0.0F, Math.min((float)l1 / (float)i2, 1.0F));
+ mShadowRight.setBounds(k1 - j1, view.getTop(), k1, view.getBottom());
+ mShadowRight.setAlpha((int)(255F * f));
+ mShadowRight.draw(canvas);
+ }
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ View findDrawerWithGravity(int i)
+ {
+ int j;
+ int k;
+ int l;
+ j = 7 & GravityCompat.getAbsoluteGravity(i, ViewCompat.getLayoutDirection(this));
+ k = getChildCount();
+ l = 0;
+_L3:
+ View view;
+ if(l >= k)
+ break MISSING_BLOCK_LABEL_56;
+ view = getChildAt(l);
+ if((7 & getDrawerViewAbsoluteGravity(view)) != j) goto _L2; else goto _L1
+_L1:
+ return view;
+_L2:
+ l++;
+ goto _L3
+ view = null;
+ goto _L1
+ }
+
+ View findOpenDrawer()
+ {
+ int i;
+ int j;
+ i = getChildCount();
+ j = 0;
+_L3:
+ View view;
+ if(j >= i)
+ break MISSING_BLOCK_LABEL_39;
+ view = getChildAt(j);
+ if(!((LayoutParams)view.getLayoutParams()).knownOpen) goto _L2; else goto _L1
+_L1:
+ return view;
+_L2:
+ j++;
+ goto _L3
+ view = null;
+ goto _L1
+ }
+
+ protected android.view.ViewGroup.LayoutParams generateDefaultLayoutParams()
+ {
+ return new LayoutParams(-1, -1);
+ }
+
+ public android.view.ViewGroup.LayoutParams generateLayoutParams(AttributeSet attributeset)
+ {
+ return new LayoutParams(getContext(), attributeset);
+ }
+
+ protected android.view.ViewGroup.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams layoutparams)
+ {
+ LayoutParams layoutparams1;
+ if(layoutparams instanceof LayoutParams)
+ layoutparams1 = new LayoutParams((LayoutParams)layoutparams);
+ else
+ if(layoutparams instanceof android.view.ViewGroup.MarginLayoutParams)
+ layoutparams1 = new LayoutParams((android.view.ViewGroup.MarginLayoutParams)layoutparams);
+ else
+ layoutparams1 = new LayoutParams(layoutparams);
+ return layoutparams1;
+ }
+
+ public int getDrawerLockMode(int i)
+ {
+ int j = GravityCompat.getAbsoluteGravity(i, ViewCompat.getLayoutDirection(this));
+ int k;
+ if(j == 3)
+ k = mLockModeLeft;
+ else
+ if(j == 5)
+ k = mLockModeRight;
+ else
+ k = 0;
+ return k;
+ }
+
+ public int getDrawerLockMode(View view)
+ {
+ int i = getDrawerViewAbsoluteGravity(view);
+ int j;
+ if(i == 3)
+ j = mLockModeLeft;
+ else
+ if(i == 5)
+ j = mLockModeRight;
+ else
+ j = 0;
+ return j;
+ }
+
+ public CharSequence getDrawerTitle(int i)
+ {
+ int j = GravityCompat.getAbsoluteGravity(i, ViewCompat.getLayoutDirection(this));
+ CharSequence charsequence;
+ if(j == 3)
+ charsequence = mTitleLeft;
+ else
+ if(j == 5)
+ charsequence = mTitleRight;
+ else
+ charsequence = null;
+ return charsequence;
+ }
+
+ int getDrawerViewAbsoluteGravity(View view)
+ {
+ return GravityCompat.getAbsoluteGravity(((LayoutParams)view.getLayoutParams()).gravity, ViewCompat.getLayoutDirection(this));
+ }
+
+ float getDrawerViewOffset(View view)
+ {
+ return ((LayoutParams)view.getLayoutParams()).onScreen;
+ }
+
+ public Drawable getStatusBarBackgroundDrawable()
+ {
+ return mStatusBarBackground;
+ }
+
+ boolean isContentView(View view)
+ {
+ boolean flag;
+ if(((LayoutParams)view.getLayoutParams()).gravity == 0)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ public boolean isDrawerOpen(int i)
+ {
+ View view = findDrawerWithGravity(i);
+ boolean flag;
+ if(view != null)
+ flag = isDrawerOpen(view);
+ else
+ flag = false;
+ return flag;
+ }
+
+ public boolean isDrawerOpen(View view)
+ {
+ if(!isDrawerView(view))
+ throw new IllegalArgumentException((new StringBuilder()).append("View ").append(view).append(" is not a drawer").toString());
+ else
+ return ((LayoutParams)view.getLayoutParams()).knownOpen;
+ }
+
+ boolean isDrawerView(View view)
+ {
+ boolean flag;
+ if((7 & GravityCompat.getAbsoluteGravity(((LayoutParams)view.getLayoutParams()).gravity, ViewCompat.getLayoutDirection(view))) != 0)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ public boolean isDrawerVisible(int i)
+ {
+ View view = findDrawerWithGravity(i);
+ boolean flag;
+ if(view != null)
+ flag = isDrawerVisible(view);
+ else
+ flag = false;
+ return flag;
+ }
+
+ public boolean isDrawerVisible(View view)
+ {
+ if(!isDrawerView(view))
+ throw new IllegalArgumentException((new StringBuilder()).append("View ").append(view).append(" is not a drawer").toString());
+ boolean flag;
+ if(((LayoutParams)view.getLayoutParams()).onScreen > 0.0F)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ void moveDrawerToOffset(View view, float f)
+ {
+ float f1 = getDrawerViewOffset(view);
+ int i = view.getWidth();
+ int j = (int)(f1 * (float)i);
+ int k = (int)(f * (float)i) - j;
+ if(!checkDrawerViewAbsoluteGravity(view, 3))
+ k = -k;
+ view.offsetLeftAndRight(k);
+ setDrawerViewOffset(view, f);
+ }
+
+ protected void onAttachedToWindow()
+ {
+ super.onAttachedToWindow();
+ mFirstLayout = true;
+ }
+
+ protected void onDetachedFromWindow()
+ {
+ super.onDetachedFromWindow();
+ mFirstLayout = true;
+ }
+
+ public void onDraw(Canvas canvas)
+ {
+ super.onDraw(canvas);
+ if(mDrawStatusBarBackground && mStatusBarBackground != null)
+ {
+ int i = IMPL.getTopInset(mLastInsets);
+ if(i > 0)
+ {
+ mStatusBarBackground.setBounds(0, 0, getWidth(), i);
+ mStatusBarBackground.draw(canvas);
+ }
+ }
+ }
+
+ public boolean onInterceptTouchEvent(MotionEvent motionevent)
+ {
+ boolean flag;
+ int i;
+ boolean flag1;
+ boolean flag2;
+ flag = false;
+ i = MotionEventCompat.getActionMasked(motionevent);
+ flag1 = mLeftDragger.shouldInterceptTouchEvent(motionevent) | mRightDragger.shouldInterceptTouchEvent(motionevent);
+ flag2 = false;
+ i;
+ JVM INSTR tableswitch 0 3: default 60
+ // 0 88
+ // 1 194
+ // 2 166
+ // 3 194;
+ goto _L1 _L2 _L3 _L4 _L3
+_L1:
+ if(flag1 || flag2 || hasPeekingDrawer() || mChildrenCanceledTouch)
+ flag = true;
+ return flag;
+_L2:
+ float f = motionevent.getX();
+ float f1 = motionevent.getY();
+ mInitialMotionX = f;
+ mInitialMotionY = f1;
+ if(mScrimOpacity > 0.0F)
+ {
+ View view = mLeftDragger.findTopChildUnder((int)f, (int)f1);
+ if(view != null && isContentView(view))
+ flag2 = true;
+ }
+ mDisallowInterceptRequested = false;
+ mChildrenCanceledTouch = false;
+ continue; /* Loop/switch isn't completed */
+_L4:
+ if(mLeftDragger.checkTouchSlop(3))
+ {
+ mLeftCallback.removeCallbacks();
+ mRightCallback.removeCallbacks();
+ }
+ continue; /* Loop/switch isn't completed */
+_L3:
+ closeDrawers(true);
+ mDisallowInterceptRequested = false;
+ mChildrenCanceledTouch = false;
+ if(true) goto _L1; else goto _L5
+_L5:
+ }
+
+ public boolean onKeyDown(int i, KeyEvent keyevent)
+ {
+ boolean flag;
+ if(i == 4 && hasVisibleDrawer())
+ {
+ KeyEventCompat.startTracking(keyevent);
+ flag = true;
+ } else
+ {
+ flag = super.onKeyDown(i, keyevent);
+ }
+ return flag;
+ }
+
+ public boolean onKeyUp(int i, KeyEvent keyevent)
+ {
+ boolean flag;
+ if(i == 4)
+ {
+ View view = findVisibleDrawer();
+ if(view != null && getDrawerLockMode(view) == 0)
+ closeDrawers();
+ if(view != null)
+ flag = true;
+ else
+ flag = false;
+ } else
+ {
+ flag = super.onKeyUp(i, keyevent);
+ }
+ return flag;
+ }
+
+ protected void onLayout(boolean flag, int i, int j, int k, int l)
+ {
+ int i1;
+ int j1;
+ int k1;
+ mInLayout = true;
+ i1 = k - i;
+ j1 = getChildCount();
+ k1 = 0;
+_L2:
+ View view;
+ if(k1 >= j1)
+ break MISSING_BLOCK_LABEL_454;
+ view = getChildAt(k1);
+ if(view.getVisibility() != 8)
+ break; /* Loop/switch isn't completed */
+_L3:
+ k1++;
+ if(true) goto _L2; else goto _L1
+_L1:
+ LayoutParams layoutparams;
+label0:
+ {
+ layoutparams = (LayoutParams)view.getLayoutParams();
+ if(!isContentView(view))
+ break label0;
+ view.layout(layoutparams.leftMargin, layoutparams.topMargin, layoutparams.leftMargin + view.getMeasuredWidth(), layoutparams.topMargin + view.getMeasuredHeight());
+ }
+ goto _L3
+ int l1;
+ int i2;
+ int j2;
+ l1 = view.getMeasuredWidth();
+ i2 = view.getMeasuredHeight();
+ float f;
+ boolean flag1;
+ if(checkDrawerViewAbsoluteGravity(view, 3))
+ {
+ j2 = -l1 + (int)((float)l1 * layoutparams.onScreen);
+ f = (float)(l1 + j2) / (float)l1;
+ } else
+ {
+ j2 = i1 - (int)((float)l1 * layoutparams.onScreen);
+ f = (float)(i1 - j2) / (float)l1;
+ }
+ if(f != layoutparams.onScreen)
+ flag1 = true;
+ else
+ flag1 = false;
+ 0x70 & layoutparams.gravity;
+ JVM INSTR lookupswitch 2: default 212
+ // 16: 362
+ // 80: 319;
+ goto _L4 _L5 _L6
+_L5:
+ break MISSING_BLOCK_LABEL_362;
+_L4:
+ view.layout(j2, layoutparams.topMargin, j2 + l1, i2 + layoutparams.topMargin);
+_L7:
+ if(flag1)
+ setDrawerViewOffset(view, f);
+ int k2;
+ int l2;
+ int i3;
+ int j3;
+ if(layoutparams.onScreen > 0.0F)
+ i3 = 0;
+ else
+ i3 = 4;
+ if(view.getVisibility() != i3)
+ view.setVisibility(i3);
+ goto _L3
+_L6:
+ j3 = l - j;
+ view.layout(j2, j3 - layoutparams.bottomMargin - view.getMeasuredHeight(), j2 + l1, j3 - layoutparams.bottomMargin);
+ goto _L7
+ k2 = l - j;
+ l2 = (k2 - i2) / 2;
+ if(l2 < layoutparams.topMargin)
+ l2 = layoutparams.topMargin;
+ else
+ if(l2 + i2 > k2 - layoutparams.bottomMargin)
+ l2 = k2 - layoutparams.bottomMargin - i2;
+ view.layout(j2, l2, j2 + l1, l2 + i2);
+ goto _L7
+ mInLayout = false;
+ mFirstLayout = false;
+ return;
+ goto _L3
+ }
+
+ protected void onMeasure(int i, int j)
+ {
+ int k;
+ int l;
+ int i1;
+ int j1;
+ k = android.view.View.MeasureSpec.getMode(i);
+ l = android.view.View.MeasureSpec.getMode(j);
+ i1 = android.view.View.MeasureSpec.getSize(i);
+ j1 = android.view.View.MeasureSpec.getSize(j);
+ if(k != 0x40000000 || l != 0x40000000)
+ {
+ if(!isInEditMode())
+ break MISSING_BLOCK_LABEL_156;
+ break MISSING_BLOCK_LABEL_45;
+ }
+_L1:
+ setMeasuredDimension(i1, j1);
+ boolean flag;
+ int k1;
+ int l1;
+ int i2;
+ if(mLastInsets != null && ViewCompat.getFitsSystemWindows(this))
+ flag = true;
+ else
+ flag = false;
+ k1 = ViewCompat.getLayoutDirection(this);
+ l1 = getChildCount();
+ i2 = 0;
+ while(i2 < l1)
+ {
+ View view = getChildAt(i2);
+ if(view.getVisibility() != 8)
+ {
+ LayoutParams layoutparams = (LayoutParams)view.getLayoutParams();
+ if(flag)
+ {
+ int k2 = GravityCompat.getAbsoluteGravity(layoutparams.gravity, k1);
+ if(ViewCompat.getFitsSystemWindows(view))
+ IMPL.dispatchChildInsets(view, mLastInsets, k2);
+ else
+ IMPL.applyMarginInsets(layoutparams, mLastInsets, k2);
+ }
+ if(isContentView(view))
+ view.measure(android.view.View.MeasureSpec.makeMeasureSpec(i1 - layoutparams.leftMargin - layoutparams.rightMargin, 0x40000000), android.view.View.MeasureSpec.makeMeasureSpec(j1 - layoutparams.topMargin - layoutparams.bottomMargin, 0x40000000));
+ else
+ if(isDrawerView(view))
+ {
+ int j2 = 7 & getDrawerViewAbsoluteGravity(view);
+ if((0 & j2) != 0)
+ throw new IllegalStateException((new StringBuilder()).append("Child drawer has absolute gravity ").append(gravityToString(j2)).append(" but this ").append("DrawerLayout").append(" already has a ").append("drawer view along that edge").toString());
+ view.measure(getChildMeasureSpec(i, mMinDrawerMargin + layoutparams.leftMargin + layoutparams.rightMargin, layoutparams.width), getChildMeasureSpec(j, layoutparams.topMargin + layoutparams.bottomMargin, layoutparams.height));
+ } else
+ {
+ throw new IllegalStateException((new StringBuilder()).append("Child ").append(view).append(" at index ").append(i2).append(" does not have a valid layout_gravity - must be Gravity.LEFT, ").append("Gravity.RIGHT or Gravity.NO_GRAVITY").toString());
+ }
+ }
+ i2++;
+ }
+ break MISSING_BLOCK_LABEL_487;
+ if(k != 0x80000000 && k == 0)
+ i1 = 300;
+ if(l != 0x80000000 && l == 0)
+ j1 = 300;
+ goto _L1
+ throw new IllegalArgumentException("DrawerLayout must be measured with MeasureSpec.EXACTLY.");
+ }
+
+ protected void onRestoreInstanceState(Parcelable parcelable)
+ {
+ SavedState savedstate = (SavedState)parcelable;
+ super.onRestoreInstanceState(savedstate.getSuperState());
+ if(savedstate.openDrawerGravity != 0)
+ {
+ View view = findDrawerWithGravity(savedstate.openDrawerGravity);
+ if(view != null)
+ openDrawer(view);
+ }
+ setDrawerLockMode(savedstate.lockModeLeft, 3);
+ setDrawerLockMode(savedstate.lockModeRight, 5);
+ }
+
+ protected Parcelable onSaveInstanceState()
+ {
+ SavedState savedstate = new SavedState(super.onSaveInstanceState());
+ View view = findOpenDrawer();
+ if(view != null)
+ savedstate.openDrawerGravity = ((LayoutParams)view.getLayoutParams()).gravity;
+ savedstate.lockModeLeft = mLockModeLeft;
+ savedstate.lockModeRight = mLockModeRight;
+ return savedstate;
+ }
+
+ public boolean onTouchEvent(MotionEvent motionevent)
+ {
+ mLeftDragger.processTouchEvent(motionevent);
+ mRightDragger.processTouchEvent(motionevent);
+ 0xff & motionevent.getAction();
+ JVM INSTR tableswitch 0 3: default 56
+ // 0 58
+ // 1 95
+ // 2 56
+ // 3 225;
+ goto _L1 _L2 _L3 _L1 _L4
+_L1:
+ return true;
+_L2:
+ float f4 = motionevent.getX();
+ float f5 = motionevent.getY();
+ mInitialMotionX = f4;
+ mInitialMotionY = f5;
+ mDisallowInterceptRequested = false;
+ mChildrenCanceledTouch = false;
+ continue; /* Loop/switch isn't completed */
+_L3:
+ float f = motionevent.getX();
+ float f1 = motionevent.getY();
+ boolean flag = true;
+ View view = mLeftDragger.findTopChildUnder((int)f, (int)f1);
+ if(view != null && isContentView(view))
+ {
+ float f2 = f - mInitialMotionX;
+ float f3 = f1 - mInitialMotionY;
+ int i = mLeftDragger.getTouchSlop();
+ if(f2 * f2 + f3 * f3 < (float)(i * i))
+ {
+ View view1 = findOpenDrawer();
+ if(view1 != null)
+ if(getDrawerLockMode(view1) == 2)
+ flag = true;
+ else
+ flag = false;
+ }
+ }
+ closeDrawers(flag);
+ mDisallowInterceptRequested = false;
+ continue; /* Loop/switch isn't completed */
+_L4:
+ closeDrawers(true);
+ mDisallowInterceptRequested = false;
+ mChildrenCanceledTouch = false;
+ if(true) goto _L1; else goto _L5
+_L5:
+ }
+
+ public void openDrawer(int i)
+ {
+ View view = findDrawerWithGravity(i);
+ if(view == null)
+ {
+ throw new IllegalArgumentException((new StringBuilder()).append("No drawer view found with gravity ").append(gravityToString(i)).toString());
+ } else
+ {
+ openDrawer(view);
+ return;
+ }
+ }
+
+ public void openDrawer(View view)
+ {
+ if(!isDrawerView(view))
+ throw new IllegalArgumentException((new StringBuilder()).append("View ").append(view).append(" is not a sliding drawer").toString());
+ if(mFirstLayout)
+ {
+ LayoutParams layoutparams = (LayoutParams)view.getLayoutParams();
+ layoutparams.onScreen = 1.0F;
+ layoutparams.knownOpen = true;
+ updateChildrenImportantForAccessibility(view, true);
+ } else
+ if(checkDrawerViewAbsoluteGravity(view, 3))
+ mLeftDragger.smoothSlideViewTo(view, 0, view.getTop());
+ else
+ mRightDragger.smoothSlideViewTo(view, getWidth() - view.getWidth(), view.getTop());
+ invalidate();
+ }
+
+ public void requestDisallowInterceptTouchEvent(boolean flag)
+ {
+ super.requestDisallowInterceptTouchEvent(flag);
+ mDisallowInterceptRequested = flag;
+ if(flag)
+ closeDrawers(true);
+ }
+
+ public void requestLayout()
+ {
+ if(!mInLayout)
+ super.requestLayout();
+ }
+
+ public void setChildInsets(Object obj, boolean flag)
+ {
+ mLastInsets = obj;
+ mDrawStatusBarBackground = flag;
+ boolean flag1;
+ if(!flag && getBackground() == null)
+ flag1 = true;
+ else
+ flag1 = false;
+ setWillNotDraw(flag1);
+ requestLayout();
+ }
+
+ public void setDrawerListener(DrawerListener drawerlistener)
+ {
+ mListener = drawerlistener;
+ }
+
+ public void setDrawerLockMode(int i)
+ {
+ setDrawerLockMode(i, 3);
+ setDrawerLockMode(i, 5);
+ }
+
+ public void setDrawerLockMode(int i, int j)
+ {
+ int k;
+ k = GravityCompat.getAbsoluteGravity(j, ViewCompat.getLayoutDirection(this));
+ if(k == 3)
+ mLockModeLeft = i;
+ else
+ if(k == 5)
+ mLockModeRight = i;
+ if(i != 0)
+ {
+ ViewDragHelper viewdraghelper;
+ if(k == 3)
+ viewdraghelper = mLeftDragger;
+ else
+ viewdraghelper = mRightDragger;
+ viewdraghelper.cancel();
+ }
+ i;
+ JVM INSTR tableswitch 1 2: default 64
+ // 1 108
+ // 2 87;
+ goto _L1 _L2 _L3
+_L1:
+ return;
+_L3:
+ View view1 = findDrawerWithGravity(k);
+ if(view1 != null)
+ openDrawer(view1);
+ continue; /* Loop/switch isn't completed */
+_L2:
+ View view = findDrawerWithGravity(k);
+ if(view != null)
+ closeDrawer(view);
+ if(true) goto _L1; else goto _L4
+_L4:
+ }
+
+ public void setDrawerLockMode(int i, View view)
+ {
+ if(!isDrawerView(view))
+ {
+ throw new IllegalArgumentException((new StringBuilder()).append("View ").append(view).append(" is not a ").append("drawer with appropriate layout_gravity").toString());
+ } else
+ {
+ setDrawerLockMode(i, ((LayoutParams)view.getLayoutParams()).gravity);
+ return;
+ }
+ }
+
+ public void setDrawerShadow(int i, int j)
+ {
+ setDrawerShadow(getResources().getDrawable(i), j);
+ }
+
+ public void setDrawerShadow(Drawable drawable, int i)
+ {
+ int j = GravityCompat.getAbsoluteGravity(i, ViewCompat.getLayoutDirection(this));
+ if((j & 3) == 3)
+ {
+ mShadowLeft = drawable;
+ invalidate();
+ }
+ if((j & 5) == 5)
+ {
+ mShadowRight = drawable;
+ invalidate();
+ }
+ }
+
+ public void setDrawerTitle(int i, CharSequence charsequence)
+ {
+ int j = GravityCompat.getAbsoluteGravity(i, ViewCompat.getLayoutDirection(this));
+ if(j != 3) goto _L2; else goto _L1
+_L1:
+ mTitleLeft = charsequence;
+_L4:
+ return;
+_L2:
+ if(j == 5)
+ mTitleRight = charsequence;
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ void setDrawerViewOffset(View view, float f)
+ {
+ LayoutParams layoutparams = (LayoutParams)view.getLayoutParams();
+ if(f != layoutparams.onScreen)
+ {
+ layoutparams.onScreen = f;
+ dispatchOnDrawerSlide(view, f);
+ }
+ }
+
+ public void setScrimColor(int i)
+ {
+ mScrimColor = i;
+ invalidate();
+ }
+
+ public void setStatusBarBackground(int i)
+ {
+ Drawable drawable;
+ if(i != 0)
+ drawable = ContextCompat.getDrawable(getContext(), i);
+ else
+ drawable = null;
+ mStatusBarBackground = drawable;
+ }
+
+ public void setStatusBarBackground(Drawable drawable)
+ {
+ mStatusBarBackground = drawable;
+ }
+
+ public void setStatusBarBackgroundColor(int i)
+ {
+ mStatusBarBackground = new ColorDrawable(i);
+ }
+
+ void updateDrawerState(int i, int j, View view)
+ {
+ LayoutParams layoutparams;
+ int k = mLeftDragger.getViewDragState();
+ int l = mRightDragger.getViewDragState();
+ int i1;
+ if(k == 1 || l == 1)
+ i1 = 1;
+ else
+ if(k == 2 || l == 2)
+ i1 = 2;
+ else
+ i1 = 0;
+ if(view == null || j != 0) goto _L2; else goto _L1
+_L1:
+ layoutparams = (LayoutParams)view.getLayoutParams();
+ if(layoutparams.onScreen != 0.0F) goto _L4; else goto _L3
+_L3:
+ dispatchOnDrawerClosed(view);
+_L2:
+ if(i1 != mDrawerState)
+ {
+ mDrawerState = i1;
+ if(mListener != null)
+ mListener.onDrawerStateChanged(i1);
+ }
+ return;
+_L4:
+ if(layoutparams.onScreen == 1.0F)
+ dispatchOnDrawerOpened(view);
+ if(true) goto _L2; else goto _L5
+_L5:
+ }
+
+ private static final boolean ALLOW_EDGE_LOCK = false;
+ private static final boolean CAN_HIDE_DESCENDANTS = false;
+ private static final boolean CHILDREN_DISALLOW_INTERCEPT = true;
+ private static final int DEFAULT_SCRIM_COLOR = 0x99000000;
+ static final DrawerLayoutCompatImpl IMPL;
+ private static final int LAYOUT_ATTRS[];
+ public static final int LOCK_MODE_LOCKED_CLOSED = 1;
+ public static final int LOCK_MODE_LOCKED_OPEN = 2;
+ public static final int LOCK_MODE_UNLOCKED = 0;
+ private static final int MIN_DRAWER_MARGIN = 64;
+ private static final int MIN_FLING_VELOCITY = 400;
+ private static final int PEEK_DELAY = 160;
+ public static final int STATE_DRAGGING = 1;
+ public static final int STATE_IDLE = 0;
+ public static final int STATE_SETTLING = 2;
+ private static final String TAG = "DrawerLayout";
+ private static final float TOUCH_SLOP_SENSITIVITY = 1F;
+ private final ChildAccessibilityDelegate mChildAccessibilityDelegate;
+ private boolean mChildrenCanceledTouch;
+ private boolean mDisallowInterceptRequested;
+ private boolean mDrawStatusBarBackground;
+ private int mDrawerState;
+ private boolean mFirstLayout;
+ private boolean mInLayout;
+ private float mInitialMotionX;
+ private float mInitialMotionY;
+ private Object mLastInsets;
+ private final ViewDragCallback mLeftCallback;
+ private final ViewDragHelper mLeftDragger;
+ private DrawerListener mListener;
+ private int mLockModeLeft;
+ private int mLockModeRight;
+ private int mMinDrawerMargin;
+ private final ViewDragCallback mRightCallback;
+ private final ViewDragHelper mRightDragger;
+ private int mScrimColor;
+ private float mScrimOpacity;
+ private Paint mScrimPaint;
+ private Drawable mShadowLeft;
+ private Drawable mShadowRight;
+ private Drawable mStatusBarBackground;
+ private CharSequence mTitleLeft;
+ private CharSequence mTitleRight;
+
+ static
+ {
+ boolean flag = true;
+ int ai[] = new int[flag];
+ ai[0] = 0x10100b3;
+ LAYOUT_ATTRS = ai;
+ if(android.os.Build.VERSION.SDK_INT < 19)
+ flag = false;
+ CAN_HIDE_DESCENDANTS = flag;
+ if(android.os.Build.VERSION.SDK_INT >= 21)
+ IMPL = new DrawerLayoutCompatImplApi21();
+ else
+ IMPL = new DrawerLayoutCompatImplBase();
+ }
+
+
+
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/DrawerLayoutCompatApi21.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/DrawerLayoutCompatApi21.java
new file mode 100644
index 0000000..7ed57a7
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/DrawerLayoutCompatApi21.java
@@ -0,0 +1,118 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.drawable.Drawable;
+import android.view.View;
+import android.view.WindowInsets;
+
+// Referenced classes of package android.support.v4.widget:
+// DrawerLayoutImpl
+
+class DrawerLayoutCompatApi21
+{
+ static class InsetsListener
+ implements android.view.View.OnApplyWindowInsetsListener
+ {
+
+ public WindowInsets onApplyWindowInsets(View view, WindowInsets windowinsets)
+ {
+ DrawerLayoutImpl drawerlayoutimpl = (DrawerLayoutImpl)view;
+ boolean flag;
+ if(windowinsets.getSystemWindowInsetTop() > 0)
+ flag = true;
+ else
+ flag = false;
+ drawerlayoutimpl.setChildInsets(windowinsets, flag);
+ return windowinsets.consumeSystemWindowInsets();
+ }
+
+ InsetsListener()
+ {
+ }
+ }
+
+
+ DrawerLayoutCompatApi21()
+ {
+ }
+
+ public static void applyMarginInsets(android.view.ViewGroup.MarginLayoutParams marginlayoutparams, Object obj, int i)
+ {
+ WindowInsets windowinsets = (WindowInsets)obj;
+ if(i != 3) goto _L2; else goto _L1
+_L1:
+ windowinsets = windowinsets.replaceSystemWindowInsets(windowinsets.getSystemWindowInsetLeft(), windowinsets.getSystemWindowInsetTop(), 0, windowinsets.getSystemWindowInsetBottom());
+_L4:
+ marginlayoutparams.leftMargin = windowinsets.getSystemWindowInsetLeft();
+ marginlayoutparams.topMargin = windowinsets.getSystemWindowInsetTop();
+ marginlayoutparams.rightMargin = windowinsets.getSystemWindowInsetRight();
+ marginlayoutparams.bottomMargin = windowinsets.getSystemWindowInsetBottom();
+ return;
+_L2:
+ if(i == 5)
+ windowinsets = windowinsets.replaceSystemWindowInsets(0, windowinsets.getSystemWindowInsetTop(), windowinsets.getSystemWindowInsetRight(), windowinsets.getSystemWindowInsetBottom());
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ public static void configureApplyInsets(View view)
+ {
+ if(view instanceof DrawerLayoutImpl)
+ {
+ view.setOnApplyWindowInsetsListener(new InsetsListener());
+ view.setSystemUiVisibility(1280);
+ }
+ }
+
+ public static void dispatchChildInsets(View view, Object obj, int i)
+ {
+ WindowInsets windowinsets = (WindowInsets)obj;
+ if(i != 3) goto _L2; else goto _L1
+_L1:
+ windowinsets = windowinsets.replaceSystemWindowInsets(windowinsets.getSystemWindowInsetLeft(), windowinsets.getSystemWindowInsetTop(), 0, windowinsets.getSystemWindowInsetBottom());
+_L4:
+ view.dispatchApplyWindowInsets(windowinsets);
+ return;
+_L2:
+ if(i == 5)
+ windowinsets = windowinsets.replaceSystemWindowInsets(0, windowinsets.getSystemWindowInsetTop(), windowinsets.getSystemWindowInsetRight(), windowinsets.getSystemWindowInsetBottom());
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ public static Drawable getDefaultStatusBarBackground(Context context)
+ {
+ TypedArray typedarray = context.obtainStyledAttributes(THEME_ATTRS);
+ Drawable drawable = typedarray.getDrawable(0);
+ typedarray.recycle();
+ return drawable;
+ Exception exception;
+ exception;
+ typedarray.recycle();
+ throw exception;
+ }
+
+ public static int getTopInset(Object obj)
+ {
+ int i;
+ if(obj != null)
+ i = ((WindowInsets)obj).getSystemWindowInsetTop();
+ else
+ i = 0;
+ return i;
+ }
+
+ private static final int THEME_ATTRS[];
+
+ static
+ {
+ int ai[] = new int[1];
+ ai[0] = 0x1010434;
+ THEME_ATTRS = ai;
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/DrawerLayoutImpl.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/DrawerLayoutImpl.java
new file mode 100644
index 0000000..958451c
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/DrawerLayoutImpl.java
@@ -0,0 +1,12 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+
+interface DrawerLayoutImpl
+{
+
+ public abstract void setChildInsets(Object obj, boolean flag);
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/EdgeEffectCompat.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/EdgeEffectCompat.java
new file mode 100644
index 0000000..9ca8d3d
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/EdgeEffectCompat.java
@@ -0,0 +1,182 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+import android.content.Context;
+import android.graphics.Canvas;
+
+// Referenced classes of package android.support.v4.widget:
+// EdgeEffectCompatIcs
+
+public class EdgeEffectCompat
+{
+ static class EdgeEffectIcsImpl
+ implements EdgeEffectImpl
+ {
+
+ public boolean draw(Object obj, Canvas canvas)
+ {
+ return EdgeEffectCompatIcs.draw(obj, canvas);
+ }
+
+ public void finish(Object obj)
+ {
+ EdgeEffectCompatIcs.finish(obj);
+ }
+
+ public boolean isFinished(Object obj)
+ {
+ return EdgeEffectCompatIcs.isFinished(obj);
+ }
+
+ public Object newEdgeEffect(Context context)
+ {
+ return EdgeEffectCompatIcs.newEdgeEffect(context);
+ }
+
+ public boolean onAbsorb(Object obj, int i)
+ {
+ return EdgeEffectCompatIcs.onAbsorb(obj, i);
+ }
+
+ public boolean onPull(Object obj, float f)
+ {
+ return EdgeEffectCompatIcs.onPull(obj, f);
+ }
+
+ public boolean onRelease(Object obj)
+ {
+ return EdgeEffectCompatIcs.onRelease(obj);
+ }
+
+ public void setSize(Object obj, int i, int j)
+ {
+ EdgeEffectCompatIcs.setSize(obj, i, j);
+ }
+
+ EdgeEffectIcsImpl()
+ {
+ }
+ }
+
+ static class BaseEdgeEffectImpl
+ implements EdgeEffectImpl
+ {
+
+ public boolean draw(Object obj, Canvas canvas)
+ {
+ return false;
+ }
+
+ public void finish(Object obj)
+ {
+ }
+
+ public boolean isFinished(Object obj)
+ {
+ return true;
+ }
+
+ public Object newEdgeEffect(Context context)
+ {
+ return null;
+ }
+
+ public boolean onAbsorb(Object obj, int i)
+ {
+ return false;
+ }
+
+ public boolean onPull(Object obj, float f)
+ {
+ return false;
+ }
+
+ public boolean onRelease(Object obj)
+ {
+ return false;
+ }
+
+ public void setSize(Object obj, int i, int j)
+ {
+ }
+
+ BaseEdgeEffectImpl()
+ {
+ }
+ }
+
+ static interface EdgeEffectImpl
+ {
+
+ public abstract boolean draw(Object obj, Canvas canvas);
+
+ public abstract void finish(Object obj);
+
+ public abstract boolean isFinished(Object obj);
+
+ public abstract Object newEdgeEffect(Context context);
+
+ public abstract boolean onAbsorb(Object obj, int i);
+
+ public abstract boolean onPull(Object obj, float f);
+
+ public abstract boolean onRelease(Object obj);
+
+ public abstract void setSize(Object obj, int i, int j);
+ }
+
+
+ public EdgeEffectCompat(Context context)
+ {
+ mEdgeEffect = IMPL.newEdgeEffect(context);
+ }
+
+ public boolean draw(Canvas canvas)
+ {
+ return IMPL.draw(mEdgeEffect, canvas);
+ }
+
+ public void finish()
+ {
+ IMPL.finish(mEdgeEffect);
+ }
+
+ public boolean isFinished()
+ {
+ return IMPL.isFinished(mEdgeEffect);
+ }
+
+ public boolean onAbsorb(int i)
+ {
+ return IMPL.onAbsorb(mEdgeEffect, i);
+ }
+
+ public boolean onPull(float f)
+ {
+ return IMPL.onPull(mEdgeEffect, f);
+ }
+
+ public boolean onRelease()
+ {
+ return IMPL.onRelease(mEdgeEffect);
+ }
+
+ public void setSize(int i, int j)
+ {
+ IMPL.setSize(mEdgeEffect, i, j);
+ }
+
+ private static final EdgeEffectImpl IMPL;
+ private Object mEdgeEffect;
+
+ static
+ {
+ if(android.os.Build.VERSION.SDK_INT >= 14)
+ IMPL = new EdgeEffectIcsImpl();
+ else
+ IMPL = new BaseEdgeEffectImpl();
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/EdgeEffectCompatIcs.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/EdgeEffectCompatIcs.java
new file mode 100644
index 0000000..2be9614
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/EdgeEffectCompatIcs.java
@@ -0,0 +1,61 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+import android.content.Context;
+import android.graphics.Canvas;
+import android.widget.EdgeEffect;
+
+class EdgeEffectCompatIcs
+{
+
+ EdgeEffectCompatIcs()
+ {
+ }
+
+ public static boolean draw(Object obj, Canvas canvas)
+ {
+ return ((EdgeEffect)obj).draw(canvas);
+ }
+
+ public static void finish(Object obj)
+ {
+ ((EdgeEffect)obj).finish();
+ }
+
+ public static boolean isFinished(Object obj)
+ {
+ return ((EdgeEffect)obj).isFinished();
+ }
+
+ public static Object newEdgeEffect(Context context)
+ {
+ return new EdgeEffect(context);
+ }
+
+ public static boolean onAbsorb(Object obj, int i)
+ {
+ ((EdgeEffect)obj).onAbsorb(i);
+ return true;
+ }
+
+ public static boolean onPull(Object obj, float f)
+ {
+ ((EdgeEffect)obj).onPull(f);
+ return true;
+ }
+
+ public static boolean onRelease(Object obj)
+ {
+ EdgeEffect edgeeffect = (EdgeEffect)obj;
+ edgeeffect.onRelease();
+ return edgeeffect.isFinished();
+ }
+
+ public static void setSize(Object obj, int i, int j)
+ {
+ ((EdgeEffect)obj).setSize(i, j);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/ExploreByTouchHelper.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/ExploreByTouchHelper.java
new file mode 100644
index 0000000..106979d
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/ExploreByTouchHelper.java
@@ -0,0 +1,403 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+import android.content.Context;
+import android.graphics.Rect;
+import android.os.Bundle;
+import android.support.v4.view.*;
+import android.support.v4.view.accessibility.*;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.accessibility.AccessibilityEvent;
+import android.view.accessibility.AccessibilityManager;
+import java.util.*;
+
+public abstract class ExploreByTouchHelper extends AccessibilityDelegateCompat
+{
+ private class ExploreByTouchNodeProvider extends AccessibilityNodeProviderCompat
+ {
+
+ public AccessibilityNodeInfoCompat createAccessibilityNodeInfo(int i)
+ {
+ return createNode(i);
+ }
+
+ public boolean performAction(int i, int j, Bundle bundle)
+ {
+ return ExploreByTouchHelper.this.performAction(i, j, bundle);
+ }
+
+ final ExploreByTouchHelper this$0;
+
+ private ExploreByTouchNodeProvider()
+ {
+ this$0 = ExploreByTouchHelper.this;
+ super();
+ }
+
+ }
+
+
+ public ExploreByTouchHelper(View view)
+ {
+ mFocusedVirtualViewId = 0x80000000;
+ mHoveredVirtualViewId = 0x80000000;
+ if(view == null)
+ {
+ throw new IllegalArgumentException("View may not be null");
+ } else
+ {
+ mView = view;
+ mManager = (AccessibilityManager)view.getContext().getSystemService("accessibility");
+ return;
+ }
+ }
+
+ private boolean clearAccessibilityFocus(int i)
+ {
+ boolean flag;
+ if(isAccessibilityFocused(i))
+ {
+ mFocusedVirtualViewId = 0x80000000;
+ mView.invalidate();
+ sendEventForVirtualView(i, 0x10000);
+ flag = true;
+ } else
+ {
+ flag = false;
+ }
+ return flag;
+ }
+
+ private AccessibilityEvent createEvent(int i, int j)
+ {
+ i;
+ JVM INSTR tableswitch -1 -1: default 20
+ // -1 29;
+ goto _L1 _L2
+_L1:
+ AccessibilityEvent accessibilityevent = createEventForChild(i, j);
+_L4:
+ return accessibilityevent;
+_L2:
+ accessibilityevent = createEventForHost(j);
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ private AccessibilityEvent createEventForChild(int i, int j)
+ {
+ AccessibilityEvent accessibilityevent = AccessibilityEvent.obtain(j);
+ accessibilityevent.setEnabled(true);
+ accessibilityevent.setClassName(DEFAULT_CLASS_NAME);
+ onPopulateEventForVirtualView(i, accessibilityevent);
+ if(accessibilityevent.getText().isEmpty() && accessibilityevent.getContentDescription() == null)
+ {
+ throw new RuntimeException("Callbacks must add text or a content description in populateEventForVirtualViewId()");
+ } else
+ {
+ accessibilityevent.setPackageName(mView.getContext().getPackageName());
+ AccessibilityEventCompat.asRecord(accessibilityevent).setSource(mView, i);
+ return accessibilityevent;
+ }
+ }
+
+ private AccessibilityEvent createEventForHost(int i)
+ {
+ AccessibilityEvent accessibilityevent = AccessibilityEvent.obtain(i);
+ ViewCompat.onInitializeAccessibilityEvent(mView, accessibilityevent);
+ return accessibilityevent;
+ }
+
+ private AccessibilityNodeInfoCompat createNode(int i)
+ {
+ i;
+ JVM INSTR tableswitch -1 -1: default 20
+ // -1 28;
+ goto _L1 _L2
+_L1:
+ AccessibilityNodeInfoCompat accessibilitynodeinfocompat = createNodeForChild(i);
+_L4:
+ return accessibilitynodeinfocompat;
+_L2:
+ accessibilitynodeinfocompat = createNodeForHost();
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ private AccessibilityNodeInfoCompat createNodeForChild(int i)
+ {
+ AccessibilityNodeInfoCompat accessibilitynodeinfocompat = AccessibilityNodeInfoCompat.obtain();
+ accessibilitynodeinfocompat.setEnabled(true);
+ accessibilitynodeinfocompat.setClassName(DEFAULT_CLASS_NAME);
+ onPopulateNodeForVirtualView(i, accessibilitynodeinfocompat);
+ if(accessibilitynodeinfocompat.getText() == null && accessibilitynodeinfocompat.getContentDescription() == null)
+ throw new RuntimeException("Callbacks must add text or a content description in populateNodeForVirtualViewId()");
+ accessibilitynodeinfocompat.getBoundsInParent(mTempParentRect);
+ if(mTempParentRect.isEmpty())
+ throw new RuntimeException("Callbacks must set parent bounds in populateNodeForVirtualViewId()");
+ int j = accessibilitynodeinfocompat.getActions();
+ if((j & 0x40) != 0)
+ throw new RuntimeException("Callbacks must not add ACTION_ACCESSIBILITY_FOCUS in populateNodeForVirtualViewId()");
+ if((j & 0x80) != 0)
+ throw new RuntimeException("Callbacks must not add ACTION_CLEAR_ACCESSIBILITY_FOCUS in populateNodeForVirtualViewId()");
+ accessibilitynodeinfocompat.setPackageName(mView.getContext().getPackageName());
+ accessibilitynodeinfocompat.setSource(mView, i);
+ accessibilitynodeinfocompat.setParent(mView);
+ int k;
+ int l;
+ if(mFocusedVirtualViewId == i)
+ {
+ accessibilitynodeinfocompat.setAccessibilityFocused(true);
+ accessibilitynodeinfocompat.addAction(128);
+ } else
+ {
+ accessibilitynodeinfocompat.setAccessibilityFocused(false);
+ accessibilitynodeinfocompat.addAction(64);
+ }
+ if(intersectVisibleToUser(mTempParentRect))
+ {
+ accessibilitynodeinfocompat.setVisibleToUser(true);
+ accessibilitynodeinfocompat.setBoundsInParent(mTempParentRect);
+ }
+ mView.getLocationOnScreen(mTempGlobalRect);
+ k = mTempGlobalRect[0];
+ l = mTempGlobalRect[1];
+ mTempScreenRect.set(mTempParentRect);
+ mTempScreenRect.offset(k, l);
+ accessibilitynodeinfocompat.setBoundsInScreen(mTempScreenRect);
+ return accessibilitynodeinfocompat;
+ }
+
+ private AccessibilityNodeInfoCompat createNodeForHost()
+ {
+ AccessibilityNodeInfoCompat accessibilitynodeinfocompat = AccessibilityNodeInfoCompat.obtain(mView);
+ ViewCompat.onInitializeAccessibilityNodeInfo(mView, accessibilitynodeinfocompat);
+ LinkedList linkedlist = new LinkedList();
+ getVisibleVirtualViews(linkedlist);
+ Integer integer;
+ for(Iterator iterator = linkedlist.iterator(); iterator.hasNext(); accessibilitynodeinfocompat.addChild(mView, integer.intValue()))
+ integer = (Integer)iterator.next();
+
+ return accessibilitynodeinfocompat;
+ }
+
+ private boolean intersectVisibleToUser(Rect rect)
+ {
+ boolean flag;
+ flag = false;
+ break MISSING_BLOCK_LABEL_2;
+label0:
+ while(true)
+ {
+ do
+ return flag;
+ while(rect == null || rect.isEmpty() || mView.getWindowVisibility() != 0);
+ android.view.ViewParent viewparent;
+ View view;
+ for(viewparent = mView.getParent(); viewparent instanceof View; viewparent = view.getParent())
+ {
+ view = (View)viewparent;
+ if(ViewCompat.getAlpha(view) <= 0.0F || view.getVisibility() != 0)
+ continue label0;
+ }
+
+ if(viewparent != null && mView.getLocalVisibleRect(mTempVisibleRect))
+ flag = rect.intersect(mTempVisibleRect);
+ }
+ }
+
+ private boolean isAccessibilityFocused(int i)
+ {
+ boolean flag;
+ if(mFocusedVirtualViewId == i)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ private boolean manageFocusForChild(int i, int j, Bundle bundle)
+ {
+ j;
+ JVM INSTR lookupswitch 2: default 28
+ // 64: 34
+ // 128: 44;
+ goto _L1 _L2 _L3
+_L1:
+ boolean flag = false;
+_L5:
+ return flag;
+_L2:
+ flag = requestAccessibilityFocus(i);
+ continue; /* Loop/switch isn't completed */
+_L3:
+ flag = clearAccessibilityFocus(i);
+ if(true) goto _L5; else goto _L4
+_L4:
+ }
+
+ private boolean performAction(int i, int j, Bundle bundle)
+ {
+ i;
+ JVM INSTR tableswitch -1 -1: default 20
+ // -1 32;
+ goto _L1 _L2
+_L1:
+ boolean flag = performActionForChild(i, j, bundle);
+_L4:
+ return flag;
+_L2:
+ flag = performActionForHost(j, bundle);
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ private boolean performActionForChild(int i, int j, Bundle bundle)
+ {
+ j;
+ JVM INSTR lookupswitch 2: default 28
+ // 64: 40
+ // 128: 40;
+ goto _L1 _L2 _L2
+_L1:
+ boolean flag = onPerformActionForVirtualView(i, j, bundle);
+_L4:
+ return flag;
+_L2:
+ flag = manageFocusForChild(i, j, bundle);
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ private boolean performActionForHost(int i, Bundle bundle)
+ {
+ return ViewCompat.performAccessibilityAction(mView, i, bundle);
+ }
+
+ private boolean requestAccessibilityFocus(int i)
+ {
+ boolean flag;
+ flag = false;
+ break MISSING_BLOCK_LABEL_2;
+ if(mManager.isEnabled() && AccessibilityManagerCompat.isTouchExplorationEnabled(mManager) && !isAccessibilityFocused(i))
+ {
+ mFocusedVirtualViewId = i;
+ mView.invalidate();
+ sendEventForVirtualView(i, 32768);
+ flag = true;
+ }
+ return flag;
+ }
+
+ private void updateHoveredVirtualView(int i)
+ {
+ if(mHoveredVirtualViewId != i)
+ {
+ int j = mHoveredVirtualViewId;
+ mHoveredVirtualViewId = i;
+ sendEventForVirtualView(i, 128);
+ sendEventForVirtualView(j, 256);
+ }
+ }
+
+ public boolean dispatchHoverEvent(MotionEvent motionevent)
+ {
+ boolean flag;
+ boolean flag1;
+ flag = true;
+ flag1 = false;
+ if(mManager.isEnabled() && AccessibilityManagerCompat.isTouchExplorationEnabled(mManager)) goto _L2; else goto _L1
+_L1:
+ return flag1;
+_L2:
+ switch(motionevent.getAction())
+ {
+ case 7: // '\007'
+ case 9: // '\t'
+ int i = getVirtualViewAt(motionevent.getX(), motionevent.getY());
+ updateHoveredVirtualView(i);
+ if(i == 0x80000000)
+ flag = false;
+ flag1 = flag;
+ break;
+
+ case 10: // '\n'
+ if(mFocusedVirtualViewId != 0x80000000)
+ {
+ updateHoveredVirtualView(0x80000000);
+ flag1 = flag;
+ }
+ break;
+ }
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ public AccessibilityNodeProviderCompat getAccessibilityNodeProvider(View view)
+ {
+ if(mNodeProvider == null)
+ mNodeProvider = new ExploreByTouchNodeProvider();
+ return mNodeProvider;
+ }
+
+ public int getFocusedVirtualView()
+ {
+ return mFocusedVirtualViewId;
+ }
+
+ protected abstract int getVirtualViewAt(float f, float f1);
+
+ protected abstract void getVisibleVirtualViews(List list);
+
+ public void invalidateRoot()
+ {
+ invalidateVirtualView(-1);
+ }
+
+ public void invalidateVirtualView(int i)
+ {
+ sendEventForVirtualView(i, 2048);
+ }
+
+ protected abstract boolean onPerformActionForVirtualView(int i, int j, Bundle bundle);
+
+ protected abstract void onPopulateEventForVirtualView(int i, AccessibilityEvent accessibilityevent);
+
+ protected abstract void onPopulateNodeForVirtualView(int i, AccessibilityNodeInfoCompat accessibilitynodeinfocompat);
+
+ public boolean sendEventForVirtualView(int i, int j)
+ {
+ boolean flag = false;
+ if(i != 0x80000000 && mManager.isEnabled()) goto _L2; else goto _L1
+_L1:
+ return flag;
+_L2:
+ android.view.ViewParent viewparent = mView.getParent();
+ if(viewparent != null)
+ {
+ AccessibilityEvent accessibilityevent = createEvent(i, j);
+ flag = ViewParentCompat.requestSendAccessibilityEvent(viewparent, mView, accessibilityevent);
+ }
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ private static final String DEFAULT_CLASS_NAME = android/view/View.getName();
+ public static final int INVALID_ID = 0x80000000;
+ private int mFocusedVirtualViewId;
+ private int mHoveredVirtualViewId;
+ private final AccessibilityManager mManager;
+ private ExploreByTouchNodeProvider mNodeProvider;
+ private final int mTempGlobalRect[] = new int[2];
+ private final Rect mTempParentRect = new Rect();
+ private final Rect mTempScreenRect = new Rect();
+ private final Rect mTempVisibleRect = new Rect();
+ private final View mView;
+
+
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/ListPopupWindowCompat.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/ListPopupWindowCompat.java
new file mode 100644
index 0000000..d723f89
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/ListPopupWindowCompat.java
@@ -0,0 +1,66 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+import android.view.View;
+
+// Referenced classes of package android.support.v4.widget:
+// ListPopupWindowCompatKitKat
+
+public class ListPopupWindowCompat
+{
+ static class KitKatListPopupWindowImpl extends BaseListPopupWindowImpl
+ {
+
+ public android.view.View.OnTouchListener createDragToOpenListener(Object obj, View view)
+ {
+ return ListPopupWindowCompatKitKat.createDragToOpenListener(obj, view);
+ }
+
+ KitKatListPopupWindowImpl()
+ {
+ }
+ }
+
+ static class BaseListPopupWindowImpl
+ implements ListPopupWindowImpl
+ {
+
+ public android.view.View.OnTouchListener createDragToOpenListener(Object obj, View view)
+ {
+ return null;
+ }
+
+ BaseListPopupWindowImpl()
+ {
+ }
+ }
+
+ static interface ListPopupWindowImpl
+ {
+
+ public abstract android.view.View.OnTouchListener createDragToOpenListener(Object obj, View view);
+ }
+
+
+ private ListPopupWindowCompat()
+ {
+ }
+
+ public static android.view.View.OnTouchListener createDragToOpenListener(Object obj, View view)
+ {
+ return IMPL.createDragToOpenListener(obj, view);
+ }
+
+ static final ListPopupWindowImpl IMPL;
+
+ static
+ {
+ if(android.os.Build.VERSION.SDK_INT >= 19)
+ IMPL = new KitKatListPopupWindowImpl();
+ else
+ IMPL = new BaseListPopupWindowImpl();
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/ListPopupWindowCompatKitKat.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/ListPopupWindowCompatKitKat.java
new file mode 100644
index 0000000..e0fa9bd
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/ListPopupWindowCompatKitKat.java
@@ -0,0 +1,21 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+import android.view.View;
+import android.widget.ListPopupWindow;
+
+class ListPopupWindowCompatKitKat
+{
+
+ ListPopupWindowCompatKitKat()
+ {
+ }
+
+ public static android.view.View.OnTouchListener createDragToOpenListener(Object obj, View view)
+ {
+ return ((ListPopupWindow)obj).createDragToOpenListener(view);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/ListViewAutoScrollHelper.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/ListViewAutoScrollHelper.java
new file mode 100644
index 0000000..5ece38b
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/ListViewAutoScrollHelper.java
@@ -0,0 +1,66 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+import android.view.View;
+import android.widget.ListView;
+
+// Referenced classes of package android.support.v4.widget:
+// AutoScrollHelper
+
+public class ListViewAutoScrollHelper extends AutoScrollHelper
+{
+
+ public ListViewAutoScrollHelper(ListView listview)
+ {
+ super(listview);
+ mTarget = listview;
+ }
+
+ public boolean canTargetScrollHorizontally(int i)
+ {
+ return false;
+ }
+
+ public boolean canTargetScrollVertically(int i)
+ {
+ boolean flag;
+ ListView listview;
+ int j;
+ flag = false;
+ listview = mTarget;
+ j = listview.getCount();
+ if(j != 0) goto _L2; else goto _L1
+_L1:
+ return flag;
+_L2:
+ int k = listview.getChildCount();
+ int l = listview.getFirstVisiblePosition();
+ int i1 = l + k;
+ if(i <= 0 ? i < 0 && (l > 0 || listview.getChildAt(0).getTop() < 0) : i1 < j || listview.getChildAt(k - 1).getBottom() > listview.getHeight())
+ flag = true;
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ public void scrollTargetBy(int i, int j)
+ {
+ ListView listview;
+ int k;
+ listview = mTarget;
+ k = listview.getFirstVisiblePosition();
+ if(k != -1) goto _L2; else goto _L1
+_L1:
+ return;
+_L2:
+ View view = listview.getChildAt(0);
+ if(view != null)
+ listview.setSelectionFromTop(k, view.getTop() - j);
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ private final ListView mTarget;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/MaterialProgressDrawable.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/MaterialProgressDrawable.java
new file mode 100644
index 0000000..95afe9b
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/MaterialProgressDrawable.java
@@ -0,0 +1,643 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.*;
+import android.graphics.drawable.Animatable;
+import android.graphics.drawable.Drawable;
+import android.util.DisplayMetrics;
+import android.view.View;
+import android.view.animation.*;
+import java.lang.annotation.Annotation;
+import java.util.ArrayList;
+
+class MaterialProgressDrawable extends Drawable
+ implements Animatable
+{
+ private static class StartCurveInterpolator extends AccelerateDecelerateInterpolator
+ {
+
+ public float getInterpolation(float f)
+ {
+ return super.getInterpolation(Math.min(1.0F, 2.0F * f));
+ }
+
+ private StartCurveInterpolator()
+ {
+ }
+
+ }
+
+ private static class EndCurveInterpolator extends AccelerateDecelerateInterpolator
+ {
+
+ public float getInterpolation(float f)
+ {
+ return super.getInterpolation(Math.max(0.0F, 2.0F * (f - 0.5F)));
+ }
+
+ private EndCurveInterpolator()
+ {
+ }
+
+ }
+
+ private static class Ring
+ {
+
+ private void drawTriangle(Canvas canvas, float f, float f1, Rect rect)
+ {
+ if(mShowArrow)
+ {
+ float f2;
+ float f3;
+ float f4;
+ if(mArrow == null)
+ {
+ mArrow = new Path();
+ mArrow.setFillType(android.graphics.Path.FillType.EVEN_ODD);
+ } else
+ {
+ mArrow.reset();
+ }
+ f2 = (float)((int)mStrokeInset / 2) * mArrowScale;
+ f3 = (float)(mRingCenterRadius * Math.cos(0.0D) + (double)rect.exactCenterX());
+ f4 = (float)(mRingCenterRadius * Math.sin(0.0D) + (double)rect.exactCenterY());
+ mArrow.moveTo(0.0F, 0.0F);
+ mArrow.lineTo((float)mArrowWidth * mArrowScale, 0.0F);
+ mArrow.lineTo(((float)mArrowWidth * mArrowScale) / 2.0F, (float)mArrowHeight * mArrowScale);
+ mArrow.offset(f3 - f2, f4);
+ mArrow.close();
+ mArrowPaint.setColor(mColors[mColorIndex]);
+ canvas.rotate((f + f1) - 5F, rect.exactCenterX(), rect.exactCenterY());
+ canvas.drawPath(mArrow, mArrowPaint);
+ }
+ }
+
+ private void invalidateSelf()
+ {
+ mCallback.invalidateDrawable(null);
+ }
+
+ public void draw(Canvas canvas, Rect rect)
+ {
+ RectF rectf = mTempBounds;
+ rectf.set(rect);
+ rectf.inset(mStrokeInset, mStrokeInset);
+ float f = 360F * (mStartTrim + mRotation);
+ float f1 = 360F * (mEndTrim + mRotation) - f;
+ mPaint.setColor(mColors[mColorIndex]);
+ canvas.drawArc(rectf, f, f1, false, mPaint);
+ drawTriangle(canvas, f, f1, rect);
+ if(mAlpha < 255)
+ {
+ mCirclePaint.setColor(mBackgroundColor);
+ mCirclePaint.setAlpha(255 - mAlpha);
+ canvas.drawCircle(rect.exactCenterX(), rect.exactCenterY(), rect.width() / 2, mCirclePaint);
+ }
+ }
+
+ public int getAlpha()
+ {
+ return mAlpha;
+ }
+
+ public double getCenterRadius()
+ {
+ return mRingCenterRadius;
+ }
+
+ public float getEndTrim()
+ {
+ return mEndTrim;
+ }
+
+ public float getInsets()
+ {
+ return mStrokeInset;
+ }
+
+ public float getRotation()
+ {
+ return mRotation;
+ }
+
+ public float getStartTrim()
+ {
+ return mStartTrim;
+ }
+
+ public float getStartingEndTrim()
+ {
+ return mStartingEndTrim;
+ }
+
+ public float getStartingRotation()
+ {
+ return mStartingRotation;
+ }
+
+ public float getStartingStartTrim()
+ {
+ return mStartingStartTrim;
+ }
+
+ public float getStrokeWidth()
+ {
+ return mStrokeWidth;
+ }
+
+ public void goToNextColor()
+ {
+ mColorIndex = (1 + mColorIndex) % mColors.length;
+ }
+
+ public void resetOriginals()
+ {
+ mStartingStartTrim = 0.0F;
+ mStartingEndTrim = 0.0F;
+ mStartingRotation = 0.0F;
+ setStartTrim(0.0F);
+ setEndTrim(0.0F);
+ setRotation(0.0F);
+ }
+
+ public void setAlpha(int i)
+ {
+ mAlpha = i;
+ }
+
+ public void setArrowDimensions(float f, float f1)
+ {
+ mArrowWidth = (int)f;
+ mArrowHeight = (int)f1;
+ }
+
+ public void setArrowScale(float f)
+ {
+ if(f != mArrowScale)
+ {
+ mArrowScale = f;
+ invalidateSelf();
+ }
+ }
+
+ public void setBackgroundColor(int i)
+ {
+ mBackgroundColor = i;
+ }
+
+ public void setCenterRadius(double d)
+ {
+ mRingCenterRadius = d;
+ }
+
+ public void setColorFilter(ColorFilter colorfilter)
+ {
+ mPaint.setColorFilter(colorfilter);
+ invalidateSelf();
+ }
+
+ public void setColorIndex(int i)
+ {
+ mColorIndex = i;
+ }
+
+ public void setColors(int ai[])
+ {
+ mColors = ai;
+ setColorIndex(0);
+ }
+
+ public void setEndTrim(float f)
+ {
+ mEndTrim = f;
+ invalidateSelf();
+ }
+
+ public void setInsets(int i, int j)
+ {
+ float f = Math.min(i, j);
+ float f1;
+ if(mRingCenterRadius <= 0.0D || f < 0.0F)
+ f1 = (float)Math.ceil(mStrokeWidth / 2.0F);
+ else
+ f1 = (float)((double)(f / 2.0F) - mRingCenterRadius);
+ mStrokeInset = f1;
+ }
+
+ public void setRotation(float f)
+ {
+ mRotation = f;
+ invalidateSelf();
+ }
+
+ public void setShowArrow(boolean flag)
+ {
+ if(mShowArrow != flag)
+ {
+ mShowArrow = flag;
+ invalidateSelf();
+ }
+ }
+
+ public void setStartTrim(float f)
+ {
+ mStartTrim = f;
+ invalidateSelf();
+ }
+
+ public void setStrokeWidth(float f)
+ {
+ mStrokeWidth = f;
+ mPaint.setStrokeWidth(f);
+ invalidateSelf();
+ }
+
+ public void storeOriginals()
+ {
+ mStartingStartTrim = mStartTrim;
+ mStartingEndTrim = mEndTrim;
+ mStartingRotation = mRotation;
+ }
+
+ private int mAlpha;
+ private Path mArrow;
+ private int mArrowHeight;
+ private final Paint mArrowPaint = new Paint();
+ private float mArrowScale;
+ private int mArrowWidth;
+ private int mBackgroundColor;
+ private final android.graphics.drawable.Drawable.Callback mCallback;
+ private final Paint mCirclePaint = new Paint();
+ private int mColorIndex;
+ private int mColors[];
+ private float mEndTrim;
+ private final Paint mPaint = new Paint();
+ private double mRingCenterRadius;
+ private float mRotation;
+ private boolean mShowArrow;
+ private float mStartTrim;
+ private float mStartingEndTrim;
+ private float mStartingRotation;
+ private float mStartingStartTrim;
+ private float mStrokeInset;
+ private float mStrokeWidth;
+ private final RectF mTempBounds = new RectF();
+
+ public Ring(android.graphics.drawable.Drawable.Callback callback)
+ {
+ mStartTrim = 0.0F;
+ mEndTrim = 0.0F;
+ mRotation = 0.0F;
+ mStrokeWidth = 5F;
+ mStrokeInset = 2.5F;
+ mCallback = callback;
+ mPaint.setStrokeCap(android.graphics.Paint.Cap.SQUARE);
+ mPaint.setAntiAlias(true);
+ mPaint.setStyle(android.graphics.Paint.Style.STROKE);
+ mArrowPaint.setStyle(android.graphics.Paint.Style.FILL);
+ mArrowPaint.setAntiAlias(true);
+ }
+ }
+
+ public static interface ProgressDrawableSize
+ extends Annotation
+ {
+ }
+
+
+ public MaterialProgressDrawable(Context context, View view)
+ {
+ int ai[] = new int[1];
+ ai[0] = 0xff000000;
+ COLORS = ai;
+ mParent = view;
+ mResources = context.getResources();
+ mRing = new Ring(mCallback);
+ mRing.setColors(COLORS);
+ updateSizes(1);
+ setupAnimators();
+ }
+
+ private void applyFinishTranslation(float f, Ring ring)
+ {
+ float f1 = (float)(1.0D + Math.floor(ring.getStartingRotation() / 0.8F));
+ ring.setStartTrim(ring.getStartingStartTrim() + f * (ring.getStartingEndTrim() - ring.getStartingStartTrim()));
+ ring.setRotation(ring.getStartingRotation() + f * (f1 - ring.getStartingRotation()));
+ }
+
+ private float getRotation()
+ {
+ return mRotation;
+ }
+
+ private void setSizeParameters(double d, double d1, double d2, double d3, float f, float f1)
+ {
+ Ring ring = mRing;
+ float f2 = mResources.getDisplayMetrics().density;
+ mWidth = d * (double)f2;
+ mHeight = d1 * (double)f2;
+ ring.setStrokeWidth(f2 * (float)d3);
+ ring.setCenterRadius(d2 * (double)f2);
+ ring.setColorIndex(0);
+ ring.setArrowDimensions(f * f2, f1 * f2);
+ ring.setInsets((int)mWidth, (int)mHeight);
+ }
+
+ private void setupAnimators()
+ {
+ final Ring ring = mRing;
+ Animation animation = new Animation() {
+
+ public void applyTransformation(float f, Transformation transformation)
+ {
+ if(mFinishing)
+ {
+ applyFinishTranslation(f, ring);
+ } else
+ {
+ float f1 = (float)Math.toRadians((double)ring.getStrokeWidth() / (6.2831853071795862D * ring.getCenterRadius()));
+ float f2 = ring.getStartingEndTrim();
+ float f3 = ring.getStartingStartTrim();
+ float f4 = ring.getStartingRotation();
+ float f5 = f2 + (0.8F - f1) * MaterialProgressDrawable.START_CURVE_INTERPOLATOR.getInterpolation(f);
+ ring.setEndTrim(f5);
+ float f6 = f3 + 0.8F * MaterialProgressDrawable.END_CURVE_INTERPOLATOR.getInterpolation(f);
+ ring.setStartTrim(f6);
+ float f7 = f4 + 0.25F * f;
+ ring.setRotation(f7);
+ float f8 = 144F * f + 720F * (mRotationCount / 5F);
+ setRotation(f8);
+ }
+ }
+
+ final MaterialProgressDrawable this$0;
+ final Ring val$ring;
+
+
+ {
+ this$0 = MaterialProgressDrawable.this;
+ ring = ring1;
+ super();
+ }
+ }
+;
+ animation.setRepeatCount(-1);
+ animation.setRepeatMode(1);
+ animation.setInterpolator(LINEAR_INTERPOLATOR);
+ animation.setAnimationListener(new android.view.animation.Animation.AnimationListener() {
+
+ public void onAnimationEnd(Animation animation1)
+ {
+ }
+
+ public void onAnimationRepeat(Animation animation1)
+ {
+ ring.storeOriginals();
+ ring.goToNextColor();
+ ring.setStartTrim(ring.getEndTrim());
+ if(mFinishing)
+ {
+ mFinishing = false;
+ animation1.setDuration(1333L);
+ ring.setShowArrow(false);
+ } else
+ {
+ mRotationCount = (1.0F + mRotationCount) % 5F;
+ }
+ }
+
+ public void onAnimationStart(Animation animation1)
+ {
+ mRotationCount = 0.0F;
+ }
+
+ final MaterialProgressDrawable this$0;
+ final Ring val$ring;
+
+
+ {
+ this$0 = MaterialProgressDrawable.this;
+ ring = ring1;
+ super();
+ }
+ }
+);
+ mAnimation = animation;
+ }
+
+ public void draw(Canvas canvas)
+ {
+ Rect rect = getBounds();
+ int i = canvas.save();
+ canvas.rotate(mRotation, rect.exactCenterX(), rect.exactCenterY());
+ mRing.draw(canvas, rect);
+ canvas.restoreToCount(i);
+ }
+
+ public int getAlpha()
+ {
+ return mRing.getAlpha();
+ }
+
+ public int getIntrinsicHeight()
+ {
+ return (int)mHeight;
+ }
+
+ public int getIntrinsicWidth()
+ {
+ return (int)mWidth;
+ }
+
+ public int getOpacity()
+ {
+ return -3;
+ }
+
+ public boolean isRunning()
+ {
+ ArrayList arraylist;
+ int i;
+ int j;
+ arraylist = mAnimators;
+ i = arraylist.size();
+ j = 0;
+_L3:
+ Animation animation;
+ if(j >= i)
+ break MISSING_BLOCK_LABEL_55;
+ animation = (Animation)arraylist.get(j);
+ if(!animation.hasStarted() || animation.hasEnded()) goto _L2; else goto _L1
+_L1:
+ boolean flag = true;
+_L4:
+ return flag;
+_L2:
+ j++;
+ goto _L3
+ flag = false;
+ goto _L4
+ }
+
+ public void setAlpha(int i)
+ {
+ mRing.setAlpha(i);
+ }
+
+ public void setArrowScale(float f)
+ {
+ mRing.setArrowScale(f);
+ }
+
+ public void setBackgroundColor(int i)
+ {
+ mRing.setBackgroundColor(i);
+ }
+
+ public void setColorFilter(ColorFilter colorfilter)
+ {
+ mRing.setColorFilter(colorfilter);
+ }
+
+ public transient void setColorSchemeColors(int ai[])
+ {
+ mRing.setColors(ai);
+ mRing.setColorIndex(0);
+ }
+
+ public void setProgressRotation(float f)
+ {
+ mRing.setRotation(f);
+ }
+
+ void setRotation(float f)
+ {
+ mRotation = f;
+ invalidateSelf();
+ }
+
+ public void setStartEndTrim(float f, float f1)
+ {
+ mRing.setStartTrim(f);
+ mRing.setEndTrim(f1);
+ }
+
+ public void showArrow(boolean flag)
+ {
+ mRing.setShowArrow(flag);
+ }
+
+ public void start()
+ {
+ mAnimation.reset();
+ mRing.storeOriginals();
+ if(mRing.getEndTrim() != mRing.getStartTrim())
+ {
+ mFinishing = true;
+ mAnimation.setDuration(666L);
+ mParent.startAnimation(mAnimation);
+ } else
+ {
+ mRing.setColorIndex(0);
+ mRing.resetOriginals();
+ mAnimation.setDuration(1333L);
+ mParent.startAnimation(mAnimation);
+ }
+ }
+
+ public void stop()
+ {
+ mParent.clearAnimation();
+ setRotation(0.0F);
+ mRing.setShowArrow(false);
+ mRing.setColorIndex(0);
+ mRing.resetOriginals();
+ }
+
+ public void updateSizes(int i)
+ {
+ if(i == 0)
+ setSizeParameters(56D, 56D, 12.5D, 3D, 12F, 6F);
+ else
+ setSizeParameters(40D, 40D, 8.75D, 2.5D, 10F, 5F);
+ }
+
+ private static final int ANIMATION_DURATION = 1333;
+ private static final int ARROW_HEIGHT = 5;
+ private static final int ARROW_HEIGHT_LARGE = 6;
+ private static final float ARROW_OFFSET_ANGLE = 5F;
+ private static final int ARROW_WIDTH = 10;
+ private static final int ARROW_WIDTH_LARGE = 12;
+ private static final float CENTER_RADIUS = 8.75F;
+ private static final float CENTER_RADIUS_LARGE = 12.5F;
+ private static final int CIRCLE_DIAMETER = 40;
+ private static final int CIRCLE_DIAMETER_LARGE = 56;
+ static final int DEFAULT = 1;
+ private static final Interpolator EASE_INTERPOLATOR = new AccelerateDecelerateInterpolator();
+ private static final Interpolator END_CURVE_INTERPOLATOR = new EndCurveInterpolator();
+ static final int LARGE = 0;
+ private static final Interpolator LINEAR_INTERPOLATOR = new LinearInterpolator();
+ private static final float MAX_PROGRESS_ARC = 0.8F;
+ private static final float NUM_POINTS = 5F;
+ private static final Interpolator START_CURVE_INTERPOLATOR = new StartCurveInterpolator();
+ private static final float STROKE_WIDTH = 2.5F;
+ private static final float STROKE_WIDTH_LARGE = 3F;
+ private final int COLORS[];
+ private Animation mAnimation;
+ private final ArrayList mAnimators = new ArrayList();
+ private final android.graphics.drawable.Drawable.Callback mCallback = new android.graphics.drawable.Drawable.Callback() {
+
+ public void invalidateDrawable(Drawable drawable)
+ {
+ invalidateSelf();
+ }
+
+ public void scheduleDrawable(Drawable drawable, Runnable runnable, long l)
+ {
+ scheduleSelf(runnable, l);
+ }
+
+ public void unscheduleDrawable(Drawable drawable, Runnable runnable)
+ {
+ unscheduleSelf(runnable);
+ }
+
+ final MaterialProgressDrawable this$0;
+
+
+ {
+ this$0 = MaterialProgressDrawable.this;
+ super();
+ }
+ }
+;
+ boolean mFinishing;
+ private double mHeight;
+ private View mParent;
+ private Resources mResources;
+ private final Ring mRing;
+ private float mRotation;
+ private float mRotationCount;
+ private double mWidth;
+
+
+
+
+
+
+
+/*
+ static float access$502(MaterialProgressDrawable materialprogressdrawable, float f)
+ {
+ materialprogressdrawable.mRotationCount = f;
+ return f;
+ }
+
+*/
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/PopupMenuCompat.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/PopupMenuCompat.java
new file mode 100644
index 0000000..9c2bcc1
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/PopupMenuCompat.java
@@ -0,0 +1,65 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+
+// Referenced classes of package android.support.v4.widget:
+// PopupMenuCompatKitKat
+
+public class PopupMenuCompat
+{
+ static class KitKatPopupMenuImpl extends BasePopupMenuImpl
+ {
+
+ public android.view.View.OnTouchListener getDragToOpenListener(Object obj)
+ {
+ return PopupMenuCompatKitKat.getDragToOpenListener(obj);
+ }
+
+ KitKatPopupMenuImpl()
+ {
+ }
+ }
+
+ static class BasePopupMenuImpl
+ implements PopupMenuImpl
+ {
+
+ public android.view.View.OnTouchListener getDragToOpenListener(Object obj)
+ {
+ return null;
+ }
+
+ BasePopupMenuImpl()
+ {
+ }
+ }
+
+ static interface PopupMenuImpl
+ {
+
+ public abstract android.view.View.OnTouchListener getDragToOpenListener(Object obj);
+ }
+
+
+ private PopupMenuCompat()
+ {
+ }
+
+ public static android.view.View.OnTouchListener getDragToOpenListener(Object obj)
+ {
+ return IMPL.getDragToOpenListener(obj);
+ }
+
+ static final PopupMenuImpl IMPL;
+
+ static
+ {
+ if(android.os.Build.VERSION.SDK_INT >= 19)
+ IMPL = new KitKatPopupMenuImpl();
+ else
+ IMPL = new BasePopupMenuImpl();
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/PopupMenuCompatKitKat.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/PopupMenuCompatKitKat.java
new file mode 100644
index 0000000..ae02c03
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/PopupMenuCompatKitKat.java
@@ -0,0 +1,20 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+import android.widget.PopupMenu;
+
+class PopupMenuCompatKitKat
+{
+
+ PopupMenuCompatKitKat()
+ {
+ }
+
+ public static android.view.View.OnTouchListener getDragToOpenListener(Object obj)
+ {
+ return ((PopupMenu)obj).getDragToOpenListener();
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/PopupWindowCompat.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/PopupWindowCompat.java
new file mode 100644
index 0000000..3fe61b3
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/PopupWindowCompat.java
@@ -0,0 +1,67 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+import android.view.View;
+import android.widget.PopupWindow;
+
+// Referenced classes of package android.support.v4.widget:
+// PopupWindowCompatKitKat
+
+public class PopupWindowCompat
+{
+ static class KitKatPopupWindowImpl extends BasePopupWindowImpl
+ {
+
+ public void showAsDropDown(PopupWindow popupwindow, View view, int i, int j, int k)
+ {
+ PopupWindowCompatKitKat.showAsDropDown(popupwindow, view, i, j, k);
+ }
+
+ KitKatPopupWindowImpl()
+ {
+ }
+ }
+
+ static class BasePopupWindowImpl
+ implements PopupWindowImpl
+ {
+
+ public void showAsDropDown(PopupWindow popupwindow, View view, int i, int j, int k)
+ {
+ popupwindow.showAsDropDown(view, i, j);
+ }
+
+ BasePopupWindowImpl()
+ {
+ }
+ }
+
+ static interface PopupWindowImpl
+ {
+
+ public abstract void showAsDropDown(PopupWindow popupwindow, View view, int i, int j, int k);
+ }
+
+
+ private PopupWindowCompat()
+ {
+ }
+
+ public static void showAsDropDown(PopupWindow popupwindow, View view, int i, int j, int k)
+ {
+ IMPL.showAsDropDown(popupwindow, view, i, j, k);
+ }
+
+ static final PopupWindowImpl IMPL;
+
+ static
+ {
+ if(android.os.Build.VERSION.SDK_INT >= 19)
+ IMPL = new KitKatPopupWindowImpl();
+ else
+ IMPL = new BasePopupWindowImpl();
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/PopupWindowCompatKitKat.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/PopupWindowCompatKitKat.java
new file mode 100644
index 0000000..60d9cd2
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/PopupWindowCompatKitKat.java
@@ -0,0 +1,21 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+import android.view.View;
+import android.widget.PopupWindow;
+
+class PopupWindowCompatKitKat
+{
+
+ PopupWindowCompatKitKat()
+ {
+ }
+
+ public static void showAsDropDown(PopupWindow popupwindow, View view, int i, int j, int k)
+ {
+ popupwindow.showAsDropDown(view, i, j, k);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/ResourceCursorAdapter.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/ResourceCursorAdapter.java
new file mode 100644
index 0000000..15d372d
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/ResourceCursorAdapter.java
@@ -0,0 +1,64 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+import android.content.Context;
+import android.database.Cursor;
+import android.view.*;
+
+// Referenced classes of package android.support.v4.widget:
+// CursorAdapter
+
+public abstract class ResourceCursorAdapter extends CursorAdapter
+{
+
+ public ResourceCursorAdapter(Context context, int i, Cursor cursor)
+ {
+ super(context, cursor);
+ mDropDownLayout = i;
+ mLayout = i;
+ mInflater = (LayoutInflater)context.getSystemService("layout_inflater");
+ }
+
+ public ResourceCursorAdapter(Context context, int i, Cursor cursor, int j)
+ {
+ super(context, cursor, j);
+ mDropDownLayout = i;
+ mLayout = i;
+ mInflater = (LayoutInflater)context.getSystemService("layout_inflater");
+ }
+
+ public ResourceCursorAdapter(Context context, int i, Cursor cursor, boolean flag)
+ {
+ super(context, cursor, flag);
+ mDropDownLayout = i;
+ mLayout = i;
+ mInflater = (LayoutInflater)context.getSystemService("layout_inflater");
+ }
+
+ public View newDropDownView(Context context, Cursor cursor, ViewGroup viewgroup)
+ {
+ return mInflater.inflate(mDropDownLayout, viewgroup, false);
+ }
+
+ public View newView(Context context, Cursor cursor, ViewGroup viewgroup)
+ {
+ return mInflater.inflate(mLayout, viewgroup, false);
+ }
+
+ public void setDropDownViewResource(int i)
+ {
+ mDropDownLayout = i;
+ }
+
+ public void setViewResource(int i)
+ {
+ mLayout = i;
+ }
+
+ private int mDropDownLayout;
+ private LayoutInflater mInflater;
+ private int mLayout;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/ScrollerCompat.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/ScrollerCompat.java
new file mode 100644
index 0000000..d7da8a1
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/ScrollerCompat.java
@@ -0,0 +1,361 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+import android.content.Context;
+import android.view.animation.Interpolator;
+import android.widget.Scroller;
+
+// Referenced classes of package android.support.v4.widget:
+// ScrollerCompatIcs, ScrollerCompatGingerbread
+
+public class ScrollerCompat
+{
+ static class ScrollerCompatImplIcs extends ScrollerCompatImplGingerbread
+ {
+
+ public float getCurrVelocity(Object obj)
+ {
+ return ScrollerCompatIcs.getCurrVelocity(obj);
+ }
+
+ ScrollerCompatImplIcs()
+ {
+ }
+ }
+
+ static class ScrollerCompatImplGingerbread
+ implements ScrollerCompatImpl
+ {
+
+ public void abortAnimation(Object obj)
+ {
+ ScrollerCompatGingerbread.abortAnimation(obj);
+ }
+
+ public boolean computeScrollOffset(Object obj)
+ {
+ return ScrollerCompatGingerbread.computeScrollOffset(obj);
+ }
+
+ public Object createScroller(Context context, Interpolator interpolator)
+ {
+ return ScrollerCompatGingerbread.createScroller(context, interpolator);
+ }
+
+ public void fling(Object obj, int i, int j, int k, int l, int i1, int j1,
+ int k1, int l1)
+ {
+ ScrollerCompatGingerbread.fling(obj, i, j, k, l, i1, j1, k1, l1);
+ }
+
+ public void fling(Object obj, int i, int j, int k, int l, int i1, int j1,
+ int k1, int l1, int i2, int j2)
+ {
+ ScrollerCompatGingerbread.fling(obj, i, j, k, l, i1, j1, k1, l1, i2, j2);
+ }
+
+ public float getCurrVelocity(Object obj)
+ {
+ return 0.0F;
+ }
+
+ public int getCurrX(Object obj)
+ {
+ return ScrollerCompatGingerbread.getCurrX(obj);
+ }
+
+ public int getCurrY(Object obj)
+ {
+ return ScrollerCompatGingerbread.getCurrY(obj);
+ }
+
+ public int getFinalX(Object obj)
+ {
+ return ScrollerCompatGingerbread.getFinalX(obj);
+ }
+
+ public int getFinalY(Object obj)
+ {
+ return ScrollerCompatGingerbread.getFinalY(obj);
+ }
+
+ public boolean isFinished(Object obj)
+ {
+ return ScrollerCompatGingerbread.isFinished(obj);
+ }
+
+ public boolean isOverScrolled(Object obj)
+ {
+ return ScrollerCompatGingerbread.isOverScrolled(obj);
+ }
+
+ public void notifyHorizontalEdgeReached(Object obj, int i, int j, int k)
+ {
+ ScrollerCompatGingerbread.notifyHorizontalEdgeReached(obj, i, j, k);
+ }
+
+ public void notifyVerticalEdgeReached(Object obj, int i, int j, int k)
+ {
+ ScrollerCompatGingerbread.notifyVerticalEdgeReached(obj, i, j, k);
+ }
+
+ public void startScroll(Object obj, int i, int j, int k, int l)
+ {
+ ScrollerCompatGingerbread.startScroll(obj, i, j, k, l);
+ }
+
+ public void startScroll(Object obj, int i, int j, int k, int l, int i1)
+ {
+ ScrollerCompatGingerbread.startScroll(obj, i, j, k, l, i1);
+ }
+
+ ScrollerCompatImplGingerbread()
+ {
+ }
+ }
+
+ static class ScrollerCompatImplBase
+ implements ScrollerCompatImpl
+ {
+
+ public void abortAnimation(Object obj)
+ {
+ ((Scroller)obj).abortAnimation();
+ }
+
+ public boolean computeScrollOffset(Object obj)
+ {
+ return ((Scroller)obj).computeScrollOffset();
+ }
+
+ public Object createScroller(Context context, Interpolator interpolator)
+ {
+ Scroller scroller;
+ if(interpolator != null)
+ scroller = new Scroller(context, interpolator);
+ else
+ scroller = new Scroller(context);
+ return scroller;
+ }
+
+ public void fling(Object obj, int i, int j, int k, int l, int i1, int j1,
+ int k1, int l1)
+ {
+ ((Scroller)obj).fling(i, j, k, l, i1, j1, k1, l1);
+ }
+
+ public void fling(Object obj, int i, int j, int k, int l, int i1, int j1,
+ int k1, int l1, int i2, int j2)
+ {
+ ((Scroller)obj).fling(i, j, k, l, i1, j1, k1, l1);
+ }
+
+ public float getCurrVelocity(Object obj)
+ {
+ return 0.0F;
+ }
+
+ public int getCurrX(Object obj)
+ {
+ return ((Scroller)obj).getCurrX();
+ }
+
+ public int getCurrY(Object obj)
+ {
+ return ((Scroller)obj).getCurrY();
+ }
+
+ public int getFinalX(Object obj)
+ {
+ return ((Scroller)obj).getFinalX();
+ }
+
+ public int getFinalY(Object obj)
+ {
+ return ((Scroller)obj).getFinalY();
+ }
+
+ public boolean isFinished(Object obj)
+ {
+ return ((Scroller)obj).isFinished();
+ }
+
+ public boolean isOverScrolled(Object obj)
+ {
+ return false;
+ }
+
+ public void notifyHorizontalEdgeReached(Object obj, int i, int j, int k)
+ {
+ }
+
+ public void notifyVerticalEdgeReached(Object obj, int i, int j, int k)
+ {
+ }
+
+ public void startScroll(Object obj, int i, int j, int k, int l)
+ {
+ ((Scroller)obj).startScroll(i, j, k, l);
+ }
+
+ public void startScroll(Object obj, int i, int j, int k, int l, int i1)
+ {
+ ((Scroller)obj).startScroll(i, j, k, l, i1);
+ }
+
+ ScrollerCompatImplBase()
+ {
+ }
+ }
+
+ static interface ScrollerCompatImpl
+ {
+
+ public abstract void abortAnimation(Object obj);
+
+ public abstract boolean computeScrollOffset(Object obj);
+
+ public abstract Object createScroller(Context context, Interpolator interpolator);
+
+ public abstract void fling(Object obj, int i, int j, int k, int l, int i1, int j1,
+ int k1, int l1);
+
+ public abstract void fling(Object obj, int i, int j, int k, int l, int i1, int j1,
+ int k1, int l1, int i2, int j2);
+
+ public abstract float getCurrVelocity(Object obj);
+
+ public abstract int getCurrX(Object obj);
+
+ public abstract int getCurrY(Object obj);
+
+ public abstract int getFinalX(Object obj);
+
+ public abstract int getFinalY(Object obj);
+
+ public abstract boolean isFinished(Object obj);
+
+ public abstract boolean isOverScrolled(Object obj);
+
+ public abstract void notifyHorizontalEdgeReached(Object obj, int i, int j, int k);
+
+ public abstract void notifyVerticalEdgeReached(Object obj, int i, int j, int k);
+
+ public abstract void startScroll(Object obj, int i, int j, int k, int l);
+
+ public abstract void startScroll(Object obj, int i, int j, int k, int l, int i1);
+ }
+
+
+ private ScrollerCompat(int i, Context context, Interpolator interpolator)
+ {
+ if(i >= 14)
+ mImpl = new ScrollerCompatImplIcs();
+ else
+ if(i >= 9)
+ mImpl = new ScrollerCompatImplGingerbread();
+ else
+ mImpl = new ScrollerCompatImplBase();
+ mScroller = mImpl.createScroller(context, interpolator);
+ }
+
+ ScrollerCompat(Context context, Interpolator interpolator)
+ {
+ this(android.os.Build.VERSION.SDK_INT, context, interpolator);
+ }
+
+ public static ScrollerCompat create(Context context)
+ {
+ return create(context, null);
+ }
+
+ public static ScrollerCompat create(Context context, Interpolator interpolator)
+ {
+ return new ScrollerCompat(context, interpolator);
+ }
+
+ public void abortAnimation()
+ {
+ mImpl.abortAnimation(mScroller);
+ }
+
+ public boolean computeScrollOffset()
+ {
+ return mImpl.computeScrollOffset(mScroller);
+ }
+
+ public void fling(int i, int j, int k, int l, int i1, int j1, int k1,
+ int l1)
+ {
+ mImpl.fling(mScroller, i, j, k, l, i1, j1, k1, l1);
+ }
+
+ public void fling(int i, int j, int k, int l, int i1, int j1, int k1,
+ int l1, int i2, int j2)
+ {
+ mImpl.fling(mScroller, i, j, k, l, i1, j1, k1, l1, i2, j2);
+ }
+
+ public float getCurrVelocity()
+ {
+ return mImpl.getCurrVelocity(mScroller);
+ }
+
+ public int getCurrX()
+ {
+ return mImpl.getCurrX(mScroller);
+ }
+
+ public int getCurrY()
+ {
+ return mImpl.getCurrY(mScroller);
+ }
+
+ public int getFinalX()
+ {
+ return mImpl.getFinalX(mScroller);
+ }
+
+ public int getFinalY()
+ {
+ return mImpl.getFinalY(mScroller);
+ }
+
+ public boolean isFinished()
+ {
+ return mImpl.isFinished(mScroller);
+ }
+
+ public boolean isOverScrolled()
+ {
+ return mImpl.isOverScrolled(mScroller);
+ }
+
+ public void notifyHorizontalEdgeReached(int i, int j, int k)
+ {
+ mImpl.notifyHorizontalEdgeReached(mScroller, i, j, k);
+ }
+
+ public void notifyVerticalEdgeReached(int i, int j, int k)
+ {
+ mImpl.notifyVerticalEdgeReached(mScroller, i, j, k);
+ }
+
+ public void startScroll(int i, int j, int k, int l)
+ {
+ mImpl.startScroll(mScroller, i, j, k, l);
+ }
+
+ public void startScroll(int i, int j, int k, int l, int i1)
+ {
+ mImpl.startScroll(mScroller, i, j, k, l, i1);
+ }
+
+ static final int CHASE_FRAME_TIME = 16;
+ private static final String TAG = "ScrollerCompat";
+ ScrollerCompatImpl mImpl;
+ Object mScroller;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/ScrollerCompatGingerbread.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/ScrollerCompatGingerbread.java
new file mode 100644
index 0000000..86ebc6c
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/ScrollerCompatGingerbread.java
@@ -0,0 +1,99 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+import android.content.Context;
+import android.view.animation.Interpolator;
+import android.widget.OverScroller;
+
+class ScrollerCompatGingerbread
+{
+
+ ScrollerCompatGingerbread()
+ {
+ }
+
+ public static void abortAnimation(Object obj)
+ {
+ ((OverScroller)obj).abortAnimation();
+ }
+
+ public static boolean computeScrollOffset(Object obj)
+ {
+ return ((OverScroller)obj).computeScrollOffset();
+ }
+
+ public static Object createScroller(Context context, Interpolator interpolator)
+ {
+ OverScroller overscroller;
+ if(interpolator != null)
+ overscroller = new OverScroller(context, interpolator);
+ else
+ overscroller = new OverScroller(context);
+ return overscroller;
+ }
+
+ public static void fling(Object obj, int i, int j, int k, int l, int i1, int j1, int k1,
+ int l1)
+ {
+ ((OverScroller)obj).fling(i, j, k, l, i1, j1, k1, l1);
+ }
+
+ public static void fling(Object obj, int i, int j, int k, int l, int i1, int j1, int k1,
+ int l1, int i2, int j2)
+ {
+ ((OverScroller)obj).fling(i, j, k, l, i1, j1, k1, l1, i2, j2);
+ }
+
+ public static int getCurrX(Object obj)
+ {
+ return ((OverScroller)obj).getCurrX();
+ }
+
+ public static int getCurrY(Object obj)
+ {
+ return ((OverScroller)obj).getCurrY();
+ }
+
+ public static int getFinalX(Object obj)
+ {
+ return ((OverScroller)obj).getFinalX();
+ }
+
+ public static int getFinalY(Object obj)
+ {
+ return ((OverScroller)obj).getFinalY();
+ }
+
+ public static boolean isFinished(Object obj)
+ {
+ return ((OverScroller)obj).isFinished();
+ }
+
+ public static boolean isOverScrolled(Object obj)
+ {
+ return ((OverScroller)obj).isOverScrolled();
+ }
+
+ public static void notifyHorizontalEdgeReached(Object obj, int i, int j, int k)
+ {
+ ((OverScroller)obj).notifyHorizontalEdgeReached(i, j, k);
+ }
+
+ public static void notifyVerticalEdgeReached(Object obj, int i, int j, int k)
+ {
+ ((OverScroller)obj).notifyVerticalEdgeReached(i, j, k);
+ }
+
+ public static void startScroll(Object obj, int i, int j, int k, int l)
+ {
+ ((OverScroller)obj).startScroll(i, j, k, l);
+ }
+
+ public static void startScroll(Object obj, int i, int j, int k, int l, int i1)
+ {
+ ((OverScroller)obj).startScroll(i, j, k, l, i1);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/ScrollerCompatIcs.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/ScrollerCompatIcs.java
new file mode 100644
index 0000000..c8b4367
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/ScrollerCompatIcs.java
@@ -0,0 +1,20 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+import android.widget.OverScroller;
+
+class ScrollerCompatIcs
+{
+
+ ScrollerCompatIcs()
+ {
+ }
+
+ public static float getCurrVelocity(Object obj)
+ {
+ return ((OverScroller)obj).getCurrVelocity();
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/SearchViewCompat.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/SearchViewCompat.java
new file mode 100644
index 0000000..c1fa460
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/SearchViewCompat.java
@@ -0,0 +1,427 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.view.View;
+
+// Referenced classes of package android.support.v4.widget:
+// SearchViewCompatIcs, SearchViewCompatHoneycomb
+
+public class SearchViewCompat
+{
+ public static abstract class OnCloseListenerCompat
+ {
+
+ public boolean onClose()
+ {
+ return false;
+ }
+
+ final Object mListener = SearchViewCompat.IMPL.newOnCloseListener(this);
+
+ public OnCloseListenerCompat()
+ {
+ }
+ }
+
+ public static abstract class OnQueryTextListenerCompat
+ {
+
+ public boolean onQueryTextChange(String s)
+ {
+ return false;
+ }
+
+ public boolean onQueryTextSubmit(String s)
+ {
+ return false;
+ }
+
+ final Object mListener = SearchViewCompat.IMPL.newOnQueryTextListener(this);
+
+ public OnQueryTextListenerCompat()
+ {
+ }
+ }
+
+ static class SearchViewCompatIcsImpl extends SearchViewCompatHoneycombImpl
+ {
+
+ public View newSearchView(Context context)
+ {
+ return SearchViewCompatIcs.newSearchView(context);
+ }
+
+ public void setImeOptions(View view, int i)
+ {
+ SearchViewCompatIcs.setImeOptions(view, i);
+ }
+
+ public void setInputType(View view, int i)
+ {
+ SearchViewCompatIcs.setInputType(view, i);
+ }
+
+ SearchViewCompatIcsImpl()
+ {
+ }
+ }
+
+ static class SearchViewCompatHoneycombImpl extends SearchViewCompatStubImpl
+ {
+
+ public CharSequence getQuery(View view)
+ {
+ return SearchViewCompatHoneycomb.getQuery(view);
+ }
+
+ public boolean isIconified(View view)
+ {
+ return SearchViewCompatHoneycomb.isIconified(view);
+ }
+
+ public boolean isQueryRefinementEnabled(View view)
+ {
+ return SearchViewCompatHoneycomb.isQueryRefinementEnabled(view);
+ }
+
+ public boolean isSubmitButtonEnabled(View view)
+ {
+ return SearchViewCompatHoneycomb.isSubmitButtonEnabled(view);
+ }
+
+ public Object newOnCloseListener(final OnCloseListenerCompat listener)
+ {
+ return SearchViewCompatHoneycomb.newOnCloseListener(new SearchViewCompatHoneycomb.OnCloseListenerCompatBridge() {
+
+ public boolean onClose()
+ {
+ return listener.onClose();
+ }
+
+ final SearchViewCompatHoneycombImpl this$0;
+ final OnCloseListenerCompat val$listener;
+
+
+ {
+ this$0 = SearchViewCompatHoneycombImpl.this;
+ listener = oncloselistenercompat;
+ super();
+ }
+ }
+);
+ }
+
+ public Object newOnQueryTextListener(final OnQueryTextListenerCompat listener)
+ {
+ return SearchViewCompatHoneycomb.newOnQueryTextListener(new SearchViewCompatHoneycomb.OnQueryTextListenerCompatBridge() {
+
+ public boolean onQueryTextChange(String s)
+ {
+ return listener.onQueryTextChange(s);
+ }
+
+ public boolean onQueryTextSubmit(String s)
+ {
+ return listener.onQueryTextSubmit(s);
+ }
+
+ final SearchViewCompatHoneycombImpl this$0;
+ final OnQueryTextListenerCompat val$listener;
+
+
+ {
+ this$0 = SearchViewCompatHoneycombImpl.this;
+ listener = onquerytextlistenercompat;
+ super();
+ }
+ }
+);
+ }
+
+ public View newSearchView(Context context)
+ {
+ return SearchViewCompatHoneycomb.newSearchView(context);
+ }
+
+ public void setIconified(View view, boolean flag)
+ {
+ SearchViewCompatHoneycomb.setIconified(view, flag);
+ }
+
+ public void setMaxWidth(View view, int i)
+ {
+ SearchViewCompatHoneycomb.setMaxWidth(view, i);
+ }
+
+ public void setOnCloseListener(Object obj, Object obj1)
+ {
+ SearchViewCompatHoneycomb.setOnCloseListener(obj, obj1);
+ }
+
+ public void setOnQueryTextListener(Object obj, Object obj1)
+ {
+ SearchViewCompatHoneycomb.setOnQueryTextListener(obj, obj1);
+ }
+
+ public void setQuery(View view, CharSequence charsequence, boolean flag)
+ {
+ SearchViewCompatHoneycomb.setQuery(view, charsequence, flag);
+ }
+
+ public void setQueryHint(View view, CharSequence charsequence)
+ {
+ SearchViewCompatHoneycomb.setQueryHint(view, charsequence);
+ }
+
+ public void setQueryRefinementEnabled(View view, boolean flag)
+ {
+ SearchViewCompatHoneycomb.setQueryRefinementEnabled(view, flag);
+ }
+
+ public void setSearchableInfo(View view, ComponentName componentname)
+ {
+ SearchViewCompatHoneycomb.setSearchableInfo(view, componentname);
+ }
+
+ public void setSubmitButtonEnabled(View view, boolean flag)
+ {
+ SearchViewCompatHoneycomb.setSubmitButtonEnabled(view, flag);
+ }
+
+ SearchViewCompatHoneycombImpl()
+ {
+ }
+ }
+
+ static class SearchViewCompatStubImpl
+ implements SearchViewCompatImpl
+ {
+
+ public CharSequence getQuery(View view)
+ {
+ return null;
+ }
+
+ public boolean isIconified(View view)
+ {
+ return true;
+ }
+
+ public boolean isQueryRefinementEnabled(View view)
+ {
+ return false;
+ }
+
+ public boolean isSubmitButtonEnabled(View view)
+ {
+ return false;
+ }
+
+ public Object newOnCloseListener(OnCloseListenerCompat oncloselistenercompat)
+ {
+ return null;
+ }
+
+ public Object newOnQueryTextListener(OnQueryTextListenerCompat onquerytextlistenercompat)
+ {
+ return null;
+ }
+
+ public View newSearchView(Context context)
+ {
+ return null;
+ }
+
+ public void setIconified(View view, boolean flag)
+ {
+ }
+
+ public void setImeOptions(View view, int i)
+ {
+ }
+
+ public void setInputType(View view, int i)
+ {
+ }
+
+ public void setMaxWidth(View view, int i)
+ {
+ }
+
+ public void setOnCloseListener(Object obj, Object obj1)
+ {
+ }
+
+ public void setOnQueryTextListener(Object obj, Object obj1)
+ {
+ }
+
+ public void setQuery(View view, CharSequence charsequence, boolean flag)
+ {
+ }
+
+ public void setQueryHint(View view, CharSequence charsequence)
+ {
+ }
+
+ public void setQueryRefinementEnabled(View view, boolean flag)
+ {
+ }
+
+ public void setSearchableInfo(View view, ComponentName componentname)
+ {
+ }
+
+ public void setSubmitButtonEnabled(View view, boolean flag)
+ {
+ }
+
+ SearchViewCompatStubImpl()
+ {
+ }
+ }
+
+ static interface SearchViewCompatImpl
+ {
+
+ public abstract CharSequence getQuery(View view);
+
+ public abstract boolean isIconified(View view);
+
+ public abstract boolean isQueryRefinementEnabled(View view);
+
+ public abstract boolean isSubmitButtonEnabled(View view);
+
+ public abstract Object newOnCloseListener(OnCloseListenerCompat oncloselistenercompat);
+
+ public abstract Object newOnQueryTextListener(OnQueryTextListenerCompat onquerytextlistenercompat);
+
+ public abstract View newSearchView(Context context);
+
+ public abstract void setIconified(View view, boolean flag);
+
+ public abstract void setImeOptions(View view, int i);
+
+ public abstract void setInputType(View view, int i);
+
+ public abstract void setMaxWidth(View view, int i);
+
+ public abstract void setOnCloseListener(Object obj, Object obj1);
+
+ public abstract void setOnQueryTextListener(Object obj, Object obj1);
+
+ public abstract void setQuery(View view, CharSequence charsequence, boolean flag);
+
+ public abstract void setQueryHint(View view, CharSequence charsequence);
+
+ public abstract void setQueryRefinementEnabled(View view, boolean flag);
+
+ public abstract void setSearchableInfo(View view, ComponentName componentname);
+
+ public abstract void setSubmitButtonEnabled(View view, boolean flag);
+ }
+
+
+ private SearchViewCompat(Context context)
+ {
+ }
+
+ public static CharSequence getQuery(View view)
+ {
+ return IMPL.getQuery(view);
+ }
+
+ public static boolean isIconified(View view)
+ {
+ return IMPL.isIconified(view);
+ }
+
+ public static boolean isQueryRefinementEnabled(View view)
+ {
+ return IMPL.isQueryRefinementEnabled(view);
+ }
+
+ public static boolean isSubmitButtonEnabled(View view)
+ {
+ return IMPL.isSubmitButtonEnabled(view);
+ }
+
+ public static View newSearchView(Context context)
+ {
+ return IMPL.newSearchView(context);
+ }
+
+ public static void setIconified(View view, boolean flag)
+ {
+ IMPL.setIconified(view, flag);
+ }
+
+ public static void setImeOptions(View view, int i)
+ {
+ IMPL.setImeOptions(view, i);
+ }
+
+ public static void setInputType(View view, int i)
+ {
+ IMPL.setInputType(view, i);
+ }
+
+ public static void setMaxWidth(View view, int i)
+ {
+ IMPL.setMaxWidth(view, i);
+ }
+
+ public static void setOnCloseListener(View view, OnCloseListenerCompat oncloselistenercompat)
+ {
+ IMPL.setOnCloseListener(view, oncloselistenercompat.mListener);
+ }
+
+ public static void setOnQueryTextListener(View view, OnQueryTextListenerCompat onquerytextlistenercompat)
+ {
+ IMPL.setOnQueryTextListener(view, onquerytextlistenercompat.mListener);
+ }
+
+ public static void setQuery(View view, CharSequence charsequence, boolean flag)
+ {
+ IMPL.setQuery(view, charsequence, flag);
+ }
+
+ public static void setQueryHint(View view, CharSequence charsequence)
+ {
+ IMPL.setQueryHint(view, charsequence);
+ }
+
+ public static void setQueryRefinementEnabled(View view, boolean flag)
+ {
+ IMPL.setQueryRefinementEnabled(view, flag);
+ }
+
+ public static void setSearchableInfo(View view, ComponentName componentname)
+ {
+ IMPL.setSearchableInfo(view, componentname);
+ }
+
+ public static void setSubmitButtonEnabled(View view, boolean flag)
+ {
+ IMPL.setSubmitButtonEnabled(view, flag);
+ }
+
+ private static final SearchViewCompatImpl IMPL;
+
+ static
+ {
+ if(android.os.Build.VERSION.SDK_INT >= 14)
+ IMPL = new SearchViewCompatIcsImpl();
+ else
+ if(android.os.Build.VERSION.SDK_INT >= 11)
+ IMPL = new SearchViewCompatHoneycombImpl();
+ else
+ IMPL = new SearchViewCompatStubImpl();
+ }
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/SearchViewCompatHoneycomb.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/SearchViewCompatHoneycomb.java
new file mode 100644
index 0000000..7cfa6f4
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/SearchViewCompatHoneycomb.java
@@ -0,0 +1,149 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+import android.app.SearchManager;
+import android.content.ComponentName;
+import android.content.Context;
+import android.view.View;
+import android.widget.SearchView;
+
+class SearchViewCompatHoneycomb
+{
+ static interface OnCloseListenerCompatBridge
+ {
+
+ public abstract boolean onClose();
+ }
+
+ static interface OnQueryTextListenerCompatBridge
+ {
+
+ public abstract boolean onQueryTextChange(String s);
+
+ public abstract boolean onQueryTextSubmit(String s);
+ }
+
+
+ SearchViewCompatHoneycomb()
+ {
+ }
+
+ public static CharSequence getQuery(View view)
+ {
+ return ((SearchView)view).getQuery();
+ }
+
+ public static boolean isIconified(View view)
+ {
+ return ((SearchView)view).isIconified();
+ }
+
+ public static boolean isQueryRefinementEnabled(View view)
+ {
+ return ((SearchView)view).isQueryRefinementEnabled();
+ }
+
+ public static boolean isSubmitButtonEnabled(View view)
+ {
+ return ((SearchView)view).isSubmitButtonEnabled();
+ }
+
+ public static Object newOnCloseListener(final OnCloseListenerCompatBridge listener)
+ {
+ return new android.widget.SearchView.OnCloseListener() {
+
+ public boolean onClose()
+ {
+ return listener.onClose();
+ }
+
+ final OnCloseListenerCompatBridge val$listener;
+
+
+ {
+ listener = oncloselistenercompatbridge;
+ super();
+ }
+ }
+;
+ }
+
+ public static Object newOnQueryTextListener(final OnQueryTextListenerCompatBridge listener)
+ {
+ return new android.widget.SearchView.OnQueryTextListener() {
+
+ public boolean onQueryTextChange(String s)
+ {
+ return listener.onQueryTextChange(s);
+ }
+
+ public boolean onQueryTextSubmit(String s)
+ {
+ return listener.onQueryTextSubmit(s);
+ }
+
+ final OnQueryTextListenerCompatBridge val$listener;
+
+
+ {
+ listener = onquerytextlistenercompatbridge;
+ super();
+ }
+ }
+;
+ }
+
+ public static View newSearchView(Context context)
+ {
+ return new SearchView(context);
+ }
+
+ public static void setIconified(View view, boolean flag)
+ {
+ ((SearchView)view).setIconified(flag);
+ }
+
+ public static void setMaxWidth(View view, int i)
+ {
+ ((SearchView)view).setMaxWidth(i);
+ }
+
+ public static void setOnCloseListener(Object obj, Object obj1)
+ {
+ ((SearchView)obj).setOnCloseListener((android.widget.SearchView.OnCloseListener)obj1);
+ }
+
+ public static void setOnQueryTextListener(Object obj, Object obj1)
+ {
+ ((SearchView)obj).setOnQueryTextListener((android.widget.SearchView.OnQueryTextListener)obj1);
+ }
+
+ public static void setQuery(View view, CharSequence charsequence, boolean flag)
+ {
+ ((SearchView)view).setQuery(charsequence, flag);
+ }
+
+ public static void setQueryHint(View view, CharSequence charsequence)
+ {
+ ((SearchView)view).setQueryHint(charsequence);
+ }
+
+ public static void setQueryRefinementEnabled(View view, boolean flag)
+ {
+ ((SearchView)view).setQueryRefinementEnabled(flag);
+ }
+
+ public static void setSearchableInfo(View view, ComponentName componentname)
+ {
+ SearchView searchview = (SearchView)view;
+ searchview.setSearchableInfo(((SearchManager)searchview.getContext().getSystemService("search")).getSearchableInfo(componentname));
+ }
+
+ public static void setSubmitButtonEnabled(View view, boolean flag)
+ {
+ ((SearchView)view).setSubmitButtonEnabled(flag);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/SearchViewCompatIcs.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/SearchViewCompatIcs.java
new file mode 100644
index 0000000..8004804
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/SearchViewCompatIcs.java
@@ -0,0 +1,47 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+import android.content.Context;
+import android.view.View;
+import android.widget.SearchView;
+
+class SearchViewCompatIcs
+{
+ public static class MySearchView extends SearchView
+ {
+
+ public void onActionViewCollapsed()
+ {
+ setQuery("", false);
+ super.onActionViewCollapsed();
+ }
+
+ public MySearchView(Context context)
+ {
+ super(context);
+ }
+ }
+
+
+ SearchViewCompatIcs()
+ {
+ }
+
+ public static View newSearchView(Context context)
+ {
+ return new MySearchView(context);
+ }
+
+ public static void setImeOptions(View view, int i)
+ {
+ ((SearchView)view).setImeOptions(i);
+ }
+
+ public static void setInputType(View view, int i)
+ {
+ ((SearchView)view).setInputType(i);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/SimpleCursorAdapter.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/SimpleCursorAdapter.java
new file mode 100644
index 0000000..eff506f
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/SimpleCursorAdapter.java
@@ -0,0 +1,178 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+import android.content.Context;
+import android.database.Cursor;
+import android.net.Uri;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+// Referenced classes of package android.support.v4.widget:
+// ResourceCursorAdapter
+
+public class SimpleCursorAdapter extends ResourceCursorAdapter
+{
+ public static interface CursorToStringConverter
+ {
+
+ public abstract CharSequence convertToString(Cursor cursor);
+ }
+
+ public static interface ViewBinder
+ {
+
+ public abstract boolean setViewValue(View view, Cursor cursor, int i);
+ }
+
+
+ public SimpleCursorAdapter(Context context, int i, Cursor cursor, String as[], int ai[])
+ {
+ super(context, i, cursor);
+ mStringConversionColumn = -1;
+ mTo = ai;
+ mOriginalFrom = as;
+ findColumns(as);
+ }
+
+ public SimpleCursorAdapter(Context context, int i, Cursor cursor, String as[], int ai[], int j)
+ {
+ super(context, i, cursor, j);
+ mStringConversionColumn = -1;
+ mTo = ai;
+ mOriginalFrom = as;
+ findColumns(as);
+ }
+
+ private void findColumns(String as[])
+ {
+ if(mCursor != null)
+ {
+ int i = as.length;
+ if(mFrom == null || mFrom.length != i)
+ mFrom = new int[i];
+ for(int j = 0; j < i; j++)
+ mFrom[j] = mCursor.getColumnIndexOrThrow(as[j]);
+
+ } else
+ {
+ mFrom = null;
+ }
+ }
+
+ public void bindView(View view, Context context, Cursor cursor)
+ {
+ ViewBinder viewbinder = mViewBinder;
+ int i = mTo.length;
+ int ai[] = mFrom;
+ int ai1[] = mTo;
+ int j = 0;
+ while(j < i)
+ {
+ View view1 = view.findViewById(ai1[j]);
+ if(view1 == null)
+ continue;
+ boolean flag = false;
+ if(viewbinder != null)
+ flag = viewbinder.setViewValue(view1, cursor, ai[j]);
+ if(!flag)
+ {
+ String s = cursor.getString(ai[j]);
+ if(s == null)
+ s = "";
+ if(view1 instanceof TextView)
+ setViewText((TextView)view1, s);
+ else
+ if(view1 instanceof ImageView)
+ setViewImage((ImageView)view1, s);
+ else
+ throw new IllegalStateException((new StringBuilder()).append(view1.getClass().getName()).append(" is not a ").append(" view that can be bounds by this SimpleCursorAdapter").toString());
+ }
+ j++;
+ }
+ }
+
+ public void changeCursorAndColumns(Cursor cursor, String as[], int ai[])
+ {
+ mOriginalFrom = as;
+ mTo = ai;
+ super.changeCursor(cursor);
+ findColumns(mOriginalFrom);
+ }
+
+ public CharSequence convertToString(Cursor cursor)
+ {
+ Object obj;
+ if(mCursorToStringConverter != null)
+ obj = mCursorToStringConverter.convertToString(cursor);
+ else
+ if(mStringConversionColumn > -1)
+ obj = cursor.getString(mStringConversionColumn);
+ else
+ obj = super.convertToString(cursor);
+ return ((CharSequence) (obj));
+ }
+
+ public CursorToStringConverter getCursorToStringConverter()
+ {
+ return mCursorToStringConverter;
+ }
+
+ public int getStringConversionColumn()
+ {
+ return mStringConversionColumn;
+ }
+
+ public ViewBinder getViewBinder()
+ {
+ return mViewBinder;
+ }
+
+ public void setCursorToStringConverter(CursorToStringConverter cursortostringconverter)
+ {
+ mCursorToStringConverter = cursortostringconverter;
+ }
+
+ public void setStringConversionColumn(int i)
+ {
+ mStringConversionColumn = i;
+ }
+
+ public void setViewBinder(ViewBinder viewbinder)
+ {
+ mViewBinder = viewbinder;
+ }
+
+ public void setViewImage(ImageView imageview, String s)
+ {
+ imageview.setImageResource(Integer.parseInt(s));
+_L1:
+ return;
+ NumberFormatException numberformatexception;
+ numberformatexception;
+ imageview.setImageURI(Uri.parse(s));
+ goto _L1
+ }
+
+ public void setViewText(TextView textview, String s)
+ {
+ textview.setText(s);
+ }
+
+ public Cursor swapCursor(Cursor cursor)
+ {
+ Cursor cursor1 = super.swapCursor(cursor);
+ findColumns(mOriginalFrom);
+ return cursor1;
+ }
+
+ private CursorToStringConverter mCursorToStringConverter;
+ protected int mFrom[];
+ String mOriginalFrom[];
+ private int mStringConversionColumn;
+ protected int mTo[];
+ private ViewBinder mViewBinder;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/SlidingPaneLayout.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/SlidingPaneLayout.java
new file mode 100644
index 0000000..410a062
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/SlidingPaneLayout.java
@@ -0,0 +1,1637 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.content.res.TypedArray;
+import android.graphics.*;
+import android.graphics.drawable.Drawable;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.support.v4.view.*;
+import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
+import android.util.*;
+import android.view.*;
+import android.view.accessibility.AccessibilityEvent;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+
+// Referenced classes of package android.support.v4.widget:
+// ViewDragHelper
+
+public class SlidingPaneLayout extends ViewGroup
+{
+ private class DisableLayerRunnable
+ implements Runnable
+ {
+
+ public void run()
+ {
+ if(mChildView.getParent() == SlidingPaneLayout.this)
+ {
+ ViewCompat.setLayerType(mChildView, 0, null);
+ invalidateChildRegion(mChildView);
+ }
+ mPostedRunnables.remove(this);
+ }
+
+ final View mChildView;
+ final SlidingPaneLayout this$0;
+
+ DisableLayerRunnable(View view)
+ {
+ this$0 = SlidingPaneLayout.this;
+ super();
+ mChildView = view;
+ }
+ }
+
+ class AccessibilityDelegate extends AccessibilityDelegateCompat
+ {
+
+ private void copyNodeInfoNoChildren(AccessibilityNodeInfoCompat accessibilitynodeinfocompat, AccessibilityNodeInfoCompat accessibilitynodeinfocompat1)
+ {
+ Rect rect = mTmpRect;
+ accessibilitynodeinfocompat1.getBoundsInParent(rect);
+ accessibilitynodeinfocompat.setBoundsInParent(rect);
+ accessibilitynodeinfocompat1.getBoundsInScreen(rect);
+ accessibilitynodeinfocompat.setBoundsInScreen(rect);
+ accessibilitynodeinfocompat.setVisibleToUser(accessibilitynodeinfocompat1.isVisibleToUser());
+ accessibilitynodeinfocompat.setPackageName(accessibilitynodeinfocompat1.getPackageName());
+ accessibilitynodeinfocompat.setClassName(accessibilitynodeinfocompat1.getClassName());
+ accessibilitynodeinfocompat.setContentDescription(accessibilitynodeinfocompat1.getContentDescription());
+ accessibilitynodeinfocompat.setEnabled(accessibilitynodeinfocompat1.isEnabled());
+ accessibilitynodeinfocompat.setClickable(accessibilitynodeinfocompat1.isClickable());
+ accessibilitynodeinfocompat.setFocusable(accessibilitynodeinfocompat1.isFocusable());
+ accessibilitynodeinfocompat.setFocused(accessibilitynodeinfocompat1.isFocused());
+ accessibilitynodeinfocompat.setAccessibilityFocused(accessibilitynodeinfocompat1.isAccessibilityFocused());
+ accessibilitynodeinfocompat.setSelected(accessibilitynodeinfocompat1.isSelected());
+ accessibilitynodeinfocompat.setLongClickable(accessibilitynodeinfocompat1.isLongClickable());
+ accessibilitynodeinfocompat.addAction(accessibilitynodeinfocompat1.getActions());
+ accessibilitynodeinfocompat.setMovementGranularities(accessibilitynodeinfocompat1.getMovementGranularities());
+ }
+
+ public boolean filter(View view)
+ {
+ return isDimmed(view);
+ }
+
+ public void onInitializeAccessibilityEvent(View view, AccessibilityEvent accessibilityevent)
+ {
+ super.onInitializeAccessibilityEvent(view, accessibilityevent);
+ accessibilityevent.setClassName(android/support/v4/widget/SlidingPaneLayout.getName());
+ }
+
+ public void onInitializeAccessibilityNodeInfo(View view, AccessibilityNodeInfoCompat accessibilitynodeinfocompat)
+ {
+ AccessibilityNodeInfoCompat accessibilitynodeinfocompat1 = AccessibilityNodeInfoCompat.obtain(accessibilitynodeinfocompat);
+ super.onInitializeAccessibilityNodeInfo(view, accessibilitynodeinfocompat1);
+ copyNodeInfoNoChildren(accessibilitynodeinfocompat, accessibilitynodeinfocompat1);
+ accessibilitynodeinfocompat1.recycle();
+ accessibilitynodeinfocompat.setClassName(android/support/v4/widget/SlidingPaneLayout.getName());
+ accessibilitynodeinfocompat.setSource(view);
+ android.view.ViewParent viewparent = ViewCompat.getParentForAccessibility(view);
+ if(viewparent instanceof View)
+ accessibilitynodeinfocompat.setParent((View)viewparent);
+ int i = getChildCount();
+ for(int j = 0; j < i; j++)
+ {
+ View view1 = getChildAt(j);
+ if(!filter(view1) && view1.getVisibility() == 0)
+ {
+ ViewCompat.setImportantForAccessibility(view1, 1);
+ accessibilitynodeinfocompat.addChild(view1);
+ }
+ }
+
+ }
+
+ public boolean onRequestSendAccessibilityEvent(ViewGroup viewgroup, View view, AccessibilityEvent accessibilityevent)
+ {
+ boolean flag;
+ if(!filter(view))
+ flag = super.onRequestSendAccessibilityEvent(viewgroup, view, accessibilityevent);
+ else
+ flag = false;
+ return flag;
+ }
+
+ private final Rect mTmpRect = new Rect();
+ final SlidingPaneLayout this$0;
+
+ AccessibilityDelegate()
+ {
+ this$0 = SlidingPaneLayout.this;
+ super();
+ }
+ }
+
+ static class SlidingPanelLayoutImplJBMR1 extends SlidingPanelLayoutImplBase
+ {
+
+ public void invalidateChildRegion(SlidingPaneLayout slidingpanelayout, View view)
+ {
+ ViewCompat.setLayerPaint(view, ((LayoutParams)view.getLayoutParams()).dimPaint);
+ }
+
+ SlidingPanelLayoutImplJBMR1()
+ {
+ }
+ }
+
+ static class SlidingPanelLayoutImplJB extends SlidingPanelLayoutImplBase
+ {
+
+ public void invalidateChildRegion(SlidingPaneLayout slidingpanelayout, View view)
+ {
+ if(mGetDisplayList != null && mRecreateDisplayList != null)
+ {
+ try
+ {
+ mRecreateDisplayList.setBoolean(view, true);
+ mGetDisplayList.invoke(view, (Object[])null);
+ }
+ catch(Exception exception)
+ {
+ Log.e("SlidingPaneLayout", "Error refreshing display list state", exception);
+ }
+ super.invalidateChildRegion(slidingpanelayout, view);
+ } else
+ {
+ view.invalidate();
+ }
+ }
+
+ private Method mGetDisplayList;
+ private Field mRecreateDisplayList;
+
+ SlidingPanelLayoutImplJB()
+ {
+ try
+ {
+ mGetDisplayList = android/view/View.getDeclaredMethod("getDisplayList", (Class[])null);
+ }
+ catch(NoSuchMethodException nosuchmethodexception)
+ {
+ Log.e("SlidingPaneLayout", "Couldn't fetch getDisplayList method; dimming won't work right.", nosuchmethodexception);
+ }
+ mRecreateDisplayList = android/view/View.getDeclaredField("mRecreateDisplayList");
+ mRecreateDisplayList.setAccessible(true);
+_L1:
+ return;
+ NoSuchFieldException nosuchfieldexception;
+ nosuchfieldexception;
+ Log.e("SlidingPaneLayout", "Couldn't fetch mRecreateDisplayList field; dimming will be slow.", nosuchfieldexception);
+ goto _L1
+ }
+ }
+
+ static class SlidingPanelLayoutImplBase
+ implements SlidingPanelLayoutImpl
+ {
+
+ public void invalidateChildRegion(SlidingPaneLayout slidingpanelayout, View view)
+ {
+ ViewCompat.postInvalidateOnAnimation(slidingpanelayout, view.getLeft(), view.getTop(), view.getRight(), view.getBottom());
+ }
+
+ SlidingPanelLayoutImplBase()
+ {
+ }
+ }
+
+ static interface SlidingPanelLayoutImpl
+ {
+
+ public abstract void invalidateChildRegion(SlidingPaneLayout slidingpanelayout, View view);
+ }
+
+ static class SavedState extends android.view.View.BaseSavedState
+ {
+
+ public void writeToParcel(Parcel parcel, int i)
+ {
+ super.writeToParcel(parcel, i);
+ int j;
+ if(isOpen)
+ j = 1;
+ else
+ j = 0;
+ parcel.writeInt(j);
+ }
+
+ public static final android.os.Parcelable.Creator CREATOR = new android.os.Parcelable.Creator() {
+
+ public SavedState createFromParcel(Parcel parcel)
+ {
+ return new SavedState(parcel);
+ }
+
+ public volatile Object createFromParcel(Parcel parcel)
+ {
+ return createFromParcel(parcel);
+ }
+
+ public SavedState[] newArray(int i)
+ {
+ return new SavedState[i];
+ }
+
+ public volatile Object[] newArray(int i)
+ {
+ return newArray(i);
+ }
+
+ }
+;
+ boolean isOpen;
+
+
+ private SavedState(Parcel parcel)
+ {
+ super(parcel);
+ boolean flag;
+ if(parcel.readInt() != 0)
+ flag = true;
+ else
+ flag = false;
+ isOpen = flag;
+ }
+
+
+ SavedState(Parcelable parcelable)
+ {
+ super(parcelable);
+ }
+ }
+
+ public static class LayoutParams extends android.view.ViewGroup.MarginLayoutParams
+ {
+
+ private static final int ATTRS[];
+ Paint dimPaint;
+ boolean dimWhenOffset;
+ boolean slideable;
+ public float weight;
+
+ static
+ {
+ int ai[] = new int[1];
+ ai[0] = 0x1010181;
+ ATTRS = ai;
+ }
+
+ public LayoutParams()
+ {
+ super(-1, -1);
+ weight = 0.0F;
+ }
+
+ public LayoutParams(int i, int j)
+ {
+ super(i, j);
+ weight = 0.0F;
+ }
+
+ public LayoutParams(Context context, AttributeSet attributeset)
+ {
+ super(context, attributeset);
+ weight = 0.0F;
+ TypedArray typedarray = context.obtainStyledAttributes(attributeset, ATTRS);
+ weight = typedarray.getFloat(0, 0.0F);
+ typedarray.recycle();
+ }
+
+ public LayoutParams(LayoutParams layoutparams)
+ {
+ super(layoutparams);
+ weight = 0.0F;
+ weight = layoutparams.weight;
+ }
+
+ public LayoutParams(android.view.ViewGroup.LayoutParams layoutparams)
+ {
+ super(layoutparams);
+ weight = 0.0F;
+ }
+
+ public LayoutParams(android.view.ViewGroup.MarginLayoutParams marginlayoutparams)
+ {
+ super(marginlayoutparams);
+ weight = 0.0F;
+ }
+ }
+
+ private class DragHelperCallback extends ViewDragHelper.Callback
+ {
+
+ public int clampViewPositionHorizontal(View view, int i, int j)
+ {
+ LayoutParams layoutparams = (LayoutParams)mSlideableView.getLayoutParams();
+ int i1;
+ if(isLayoutRtlSupport())
+ {
+ int j1 = getWidth() - (getPaddingRight() + layoutparams.rightMargin + mSlideableView.getWidth());
+ int k1 = j1 - mSlideRange;
+ i1 = Math.max(Math.min(i, j1), k1);
+ } else
+ {
+ int k = getPaddingLeft() + layoutparams.leftMargin;
+ int l = k + mSlideRange;
+ i1 = Math.min(Math.max(i, k), l);
+ }
+ return i1;
+ }
+
+ public int clampViewPositionVertical(View view, int i, int j)
+ {
+ return view.getTop();
+ }
+
+ public int getViewHorizontalDragRange(View view)
+ {
+ return mSlideRange;
+ }
+
+ public void onEdgeDragStarted(int i, int j)
+ {
+ mDragHelper.captureChildView(mSlideableView, j);
+ }
+
+ public void onViewCaptured(View view, int i)
+ {
+ setAllChildrenVisible();
+ }
+
+ public void onViewDragStateChanged(int i)
+ {
+ if(mDragHelper.getViewDragState() == 0)
+ if(mSlideOffset == 0.0F)
+ {
+ updateObscuredViewsVisibility(mSlideableView);
+ dispatchOnPanelClosed(mSlideableView);
+ mPreservedOpenState = false;
+ } else
+ {
+ dispatchOnPanelOpened(mSlideableView);
+ mPreservedOpenState = true;
+ }
+ }
+
+ public void onViewPositionChanged(View view, int i, int j, int k, int l)
+ {
+ onPanelDragged(i);
+ invalidate();
+ }
+
+ public void onViewReleased(View view, float f, float f1)
+ {
+ LayoutParams layoutparams = (LayoutParams)view.getLayoutParams();
+ if(!isLayoutRtlSupport()) goto _L2; else goto _L1
+_L1:
+ int i;
+ int j = getPaddingRight() + layoutparams.rightMargin;
+ if(f < 0.0F || f == 0.0F && mSlideOffset > 0.5F)
+ j += mSlideRange;
+ int k = mSlideableView.getWidth();
+ i = getWidth() - j - k;
+_L4:
+ mDragHelper.settleCapturedViewAt(i, view.getTop());
+ invalidate();
+ return;
+_L2:
+ i = getPaddingLeft() + layoutparams.leftMargin;
+ if(f > 0.0F || f == 0.0F && mSlideOffset > 0.5F)
+ i += mSlideRange;
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ public boolean tryCaptureView(View view, int i)
+ {
+ boolean flag;
+ if(mIsUnableToDrag)
+ flag = false;
+ else
+ flag = ((LayoutParams)view.getLayoutParams()).slideable;
+ return flag;
+ }
+
+ final SlidingPaneLayout this$0;
+
+ private DragHelperCallback()
+ {
+ this$0 = SlidingPaneLayout.this;
+ super();
+ }
+
+ }
+
+ public static class SimplePanelSlideListener
+ implements PanelSlideListener
+ {
+
+ public void onPanelClosed(View view)
+ {
+ }
+
+ public void onPanelOpened(View view)
+ {
+ }
+
+ public void onPanelSlide(View view, float f)
+ {
+ }
+
+ public SimplePanelSlideListener()
+ {
+ }
+ }
+
+ public static interface PanelSlideListener
+ {
+
+ public abstract void onPanelClosed(View view);
+
+ public abstract void onPanelOpened(View view);
+
+ public abstract void onPanelSlide(View view, float f);
+ }
+
+
+ public SlidingPaneLayout(Context context)
+ {
+ this(context, null);
+ }
+
+ public SlidingPaneLayout(Context context, AttributeSet attributeset)
+ {
+ this(context, attributeset, 0);
+ }
+
+ public SlidingPaneLayout(Context context, AttributeSet attributeset, int i)
+ {
+ super(context, attributeset, i);
+ mSliderFadeColor = 0xcccccccc;
+ mFirstLayout = true;
+ mTmpRect = new Rect();
+ mPostedRunnables = new ArrayList();
+ float f = context.getResources().getDisplayMetrics().density;
+ mOverhangSize = (int)(0.5F + 32F * f);
+ ViewConfiguration.get(context);
+ setWillNotDraw(false);
+ ViewCompat.setAccessibilityDelegate(this, new AccessibilityDelegate());
+ ViewCompat.setImportantForAccessibility(this, 1);
+ mDragHelper = ViewDragHelper.create(this, 0.5F, new DragHelperCallback());
+ mDragHelper.setMinVelocity(400F * f);
+ }
+
+ private boolean closePane(View view, int i)
+ {
+ boolean flag = false;
+ if(mFirstLayout || smoothSlideTo(0.0F, i))
+ {
+ mPreservedOpenState = false;
+ flag = true;
+ }
+ return flag;
+ }
+
+ private void dimChildView(View view, float f, int i)
+ {
+ LayoutParams layoutparams = (LayoutParams)view.getLayoutParams();
+ if(f <= 0.0F || i == 0) goto _L2; else goto _L1
+_L1:
+ int j = (int)(f * (float)((0xff000000 & i) >>> 24)) << 24 | 0xffffff & i;
+ if(layoutparams.dimPaint == null)
+ layoutparams.dimPaint = new Paint();
+ layoutparams.dimPaint.setColorFilter(new PorterDuffColorFilter(j, android.graphics.PorterDuff.Mode.SRC_OVER));
+ if(ViewCompat.getLayerType(view) != 2)
+ ViewCompat.setLayerType(view, 2, layoutparams.dimPaint);
+ invalidateChildRegion(view);
+_L4:
+ return;
+_L2:
+ if(ViewCompat.getLayerType(view) != 0)
+ {
+ if(layoutparams.dimPaint != null)
+ layoutparams.dimPaint.setColorFilter(null);
+ DisableLayerRunnable disablelayerrunnable = new DisableLayerRunnable(view);
+ mPostedRunnables.add(disablelayerrunnable);
+ ViewCompat.postOnAnimation(this, disablelayerrunnable);
+ }
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ private void invalidateChildRegion(View view)
+ {
+ IMPL.invalidateChildRegion(this, view);
+ }
+
+ private boolean isLayoutRtlSupport()
+ {
+ boolean flag = true;
+ if(ViewCompat.getLayoutDirection(this) != flag)
+ flag = false;
+ return flag;
+ }
+
+ private void onPanelDragged(int i)
+ {
+ if(mSlideableView == null)
+ {
+ mSlideOffset = 0.0F;
+ } else
+ {
+ boolean flag = isLayoutRtlSupport();
+ LayoutParams layoutparams = (LayoutParams)mSlideableView.getLayoutParams();
+ int j = mSlideableView.getWidth();
+ int k;
+ int l;
+ int i1;
+ if(flag)
+ k = getWidth() - i - j;
+ else
+ k = i;
+ if(flag)
+ l = getPaddingRight();
+ else
+ l = getPaddingLeft();
+ if(flag)
+ i1 = layoutparams.rightMargin;
+ else
+ i1 = layoutparams.leftMargin;
+ mSlideOffset = (float)(k - (l + i1)) / (float)mSlideRange;
+ if(mParallaxBy != 0)
+ parallaxOtherViews(mSlideOffset);
+ if(layoutparams.dimWhenOffset)
+ dimChildView(mSlideableView, mSlideOffset, mSliderFadeColor);
+ dispatchOnPanelSlide(mSlideableView);
+ }
+ }
+
+ private boolean openPane(View view, int i)
+ {
+ boolean flag = true;
+ if(mFirstLayout || smoothSlideTo(1.0F, i))
+ mPreservedOpenState = flag;
+ else
+ flag = false;
+ return flag;
+ }
+
+ private void parallaxOtherViews(float f)
+ {
+ boolean flag;
+ boolean flag1;
+ flag = isLayoutRtlSupport();
+ LayoutParams layoutparams = (LayoutParams)mSlideableView.getLayoutParams();
+ if(layoutparams.dimWhenOffset)
+ {
+label0:
+ {
+ int i;
+ int j;
+ int i1;
+ if(flag)
+ i1 = layoutparams.rightMargin;
+ else
+ i1 = layoutparams.leftMargin;
+ if(i1 <= 0)
+ {
+ flag1 = true;
+ break label0;
+ }
+ }
+ }
+ flag1 = false;
+ continue;
+ while(true)
+ {
+ i = getChildCount();
+ j = 0;
+ while(j < i)
+ {
+ View view = getChildAt(j);
+ if(view != mSlideableView)
+ {
+ int k = (int)((1.0F - mParallaxOffset) * (float)mParallaxBy);
+ mParallaxOffset = f;
+ int l = k - (int)((1.0F - f) * (float)mParallaxBy);
+ if(flag)
+ l = -l;
+ view.offsetLeftAndRight(l);
+ if(flag1)
+ {
+ float f1;
+ if(flag)
+ f1 = mParallaxOffset - 1.0F;
+ else
+ f1 = 1.0F - mParallaxOffset;
+ dimChildView(view, f1, mCoveredFadeColor);
+ }
+ }
+ j++;
+ }
+ return;
+ }
+ }
+
+ private static boolean viewIsOpaque(View view)
+ {
+ boolean flag = true;
+ if(!ViewCompat.isOpaque(view)) goto _L2; else goto _L1
+_L1:
+ return flag;
+_L2:
+ if(android.os.Build.VERSION.SDK_INT >= 18)
+ {
+ flag = false;
+ } else
+ {
+ Drawable drawable = view.getBackground();
+ if(drawable != null)
+ {
+ if(drawable.getOpacity() != -1)
+ flag = false;
+ } else
+ {
+ flag = false;
+ }
+ }
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ protected boolean canScroll(View view, boolean flag, int i, int j, int k)
+ {
+ if(!(view instanceof ViewGroup)) goto _L2; else goto _L1
+_L1:
+ ViewGroup viewgroup;
+ int l;
+ int i1;
+ int j1;
+ viewgroup = (ViewGroup)view;
+ l = view.getScrollX();
+ i1 = view.getScrollY();
+ j1 = -1 + viewgroup.getChildCount();
+_L4:
+ if(j1 < 0) goto _L2; else goto _L3
+_L3:
+ boolean flag1;
+ View view1 = viewgroup.getChildAt(j1);
+ if(j + l < view1.getLeft() || j + l >= view1.getRight() || k + i1 < view1.getTop() || k + i1 >= view1.getBottom())
+ continue; /* Loop/switch isn't completed */
+ int k1 = (j + l) - view1.getLeft();
+ int l1 = (k + i1) - view1.getTop();
+ if(!canScroll(view1, true, i, k1, l1))
+ continue; /* Loop/switch isn't completed */
+ flag1 = true;
+_L5:
+ return flag1;
+ j1--;
+ goto _L4
+_L2:
+label0:
+ {
+ if(!flag)
+ break label0;
+ if(!isLayoutRtlSupport())
+ i = -i;
+ if(!ViewCompat.canScrollHorizontally(view, i))
+ break label0;
+ flag1 = true;
+ }
+ goto _L5
+ flag1 = false;
+ goto _L5
+ }
+
+ public boolean canSlide()
+ {
+ return mCanSlide;
+ }
+
+ protected boolean checkLayoutParams(android.view.ViewGroup.LayoutParams layoutparams)
+ {
+ boolean flag;
+ if((layoutparams instanceof LayoutParams) && super.checkLayoutParams(layoutparams))
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ public boolean closePane()
+ {
+ return closePane(mSlideableView, 0);
+ }
+
+ public void computeScroll()
+ {
+ if(mDragHelper.continueSettling(true))
+ if(!mCanSlide)
+ mDragHelper.abort();
+ else
+ ViewCompat.postInvalidateOnAnimation(this);
+ }
+
+ void dispatchOnPanelClosed(View view)
+ {
+ if(mPanelSlideListener != null)
+ mPanelSlideListener.onPanelClosed(view);
+ sendAccessibilityEvent(32);
+ }
+
+ void dispatchOnPanelOpened(View view)
+ {
+ if(mPanelSlideListener != null)
+ mPanelSlideListener.onPanelOpened(view);
+ sendAccessibilityEvent(32);
+ }
+
+ void dispatchOnPanelSlide(View view)
+ {
+ if(mPanelSlideListener != null)
+ mPanelSlideListener.onPanelSlide(view, mSlideOffset);
+ }
+
+ public void draw(Canvas canvas)
+ {
+ super.draw(canvas);
+ Drawable drawable;
+ View view;
+ if(isLayoutRtlSupport())
+ drawable = mShadowDrawableRight;
+ else
+ drawable = mShadowDrawableLeft;
+ if(getChildCount() > 1)
+ view = getChildAt(1);
+ else
+ view = null;
+ if(view != null && drawable != null)
+ {
+ int i = view.getTop();
+ int j = view.getBottom();
+ int k = drawable.getIntrinsicWidth();
+ int l;
+ int i1;
+ if(isLayoutRtlSupport())
+ {
+ i1 = view.getRight();
+ l = i1 + k;
+ } else
+ {
+ l = view.getLeft();
+ i1 = l - k;
+ }
+ drawable.setBounds(i1, i, l, j);
+ drawable.draw(canvas);
+ }
+ }
+
+ protected boolean drawChild(Canvas canvas, View view, long l)
+ {
+ LayoutParams layoutparams = (LayoutParams)view.getLayoutParams();
+ int i = canvas.save(2);
+ boolean flag;
+ if(mCanSlide && !layoutparams.slideable && mSlideableView != null)
+ {
+ canvas.getClipBounds(mTmpRect);
+ if(isLayoutRtlSupport())
+ mTmpRect.left = Math.max(mTmpRect.left, mSlideableView.getRight());
+ else
+ mTmpRect.right = Math.min(mTmpRect.right, mSlideableView.getLeft());
+ canvas.clipRect(mTmpRect);
+ }
+ if(android.os.Build.VERSION.SDK_INT >= 11)
+ flag = super.drawChild(canvas, view, l);
+ else
+ if(layoutparams.dimWhenOffset && mSlideOffset > 0.0F)
+ {
+ if(!view.isDrawingCacheEnabled())
+ view.setDrawingCacheEnabled(true);
+ android.graphics.Bitmap bitmap = view.getDrawingCache();
+ if(bitmap != null)
+ {
+ canvas.drawBitmap(bitmap, view.getLeft(), view.getTop(), layoutparams.dimPaint);
+ flag = false;
+ } else
+ {
+ Log.e("SlidingPaneLayout", (new StringBuilder()).append("drawChild: child view ").append(view).append(" returned null drawing cache").toString());
+ flag = super.drawChild(canvas, view, l);
+ }
+ } else
+ {
+ if(view.isDrawingCacheEnabled())
+ view.setDrawingCacheEnabled(false);
+ flag = super.drawChild(canvas, view, l);
+ }
+ canvas.restoreToCount(i);
+ return flag;
+ }
+
+ protected android.view.ViewGroup.LayoutParams generateDefaultLayoutParams()
+ {
+ return new LayoutParams();
+ }
+
+ public android.view.ViewGroup.LayoutParams generateLayoutParams(AttributeSet attributeset)
+ {
+ return new LayoutParams(getContext(), attributeset);
+ }
+
+ protected android.view.ViewGroup.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams layoutparams)
+ {
+ LayoutParams layoutparams1;
+ if(layoutparams instanceof android.view.ViewGroup.MarginLayoutParams)
+ layoutparams1 = new LayoutParams((android.view.ViewGroup.MarginLayoutParams)layoutparams);
+ else
+ layoutparams1 = new LayoutParams(layoutparams);
+ return layoutparams1;
+ }
+
+ public int getCoveredFadeColor()
+ {
+ return mCoveredFadeColor;
+ }
+
+ public int getParallaxDistance()
+ {
+ return mParallaxBy;
+ }
+
+ public int getSliderFadeColor()
+ {
+ return mSliderFadeColor;
+ }
+
+ boolean isDimmed(View view)
+ {
+ boolean flag = false;
+ if(view != null) goto _L2; else goto _L1
+_L1:
+ return flag;
+_L2:
+ LayoutParams layoutparams = (LayoutParams)view.getLayoutParams();
+ if(mCanSlide && layoutparams.dimWhenOffset && mSlideOffset > 0.0F)
+ flag = true;
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ public boolean isOpen()
+ {
+ boolean flag;
+ if(!mCanSlide || mSlideOffset == 1.0F)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ public boolean isSlideable()
+ {
+ return mCanSlide;
+ }
+
+ protected void onAttachedToWindow()
+ {
+ super.onAttachedToWindow();
+ mFirstLayout = true;
+ }
+
+ protected void onDetachedFromWindow()
+ {
+ super.onDetachedFromWindow();
+ mFirstLayout = true;
+ int i = 0;
+ for(int j = mPostedRunnables.size(); i < j; i++)
+ ((DisableLayerRunnable)mPostedRunnables.get(i)).run();
+
+ mPostedRunnables.clear();
+ }
+
+ public boolean onInterceptTouchEvent(MotionEvent motionevent)
+ {
+ int i;
+ boolean flag;
+ i = MotionEventCompat.getActionMasked(motionevent);
+ if(!mCanSlide && i == 0 && getChildCount() > 1)
+ {
+ View view = getChildAt(1);
+ if(view != null)
+ {
+ boolean flag2;
+ if(!mDragHelper.isViewUnder(view, (int)motionevent.getX(), (int)motionevent.getY()))
+ flag2 = true;
+ else
+ flag2 = false;
+ mPreservedOpenState = flag2;
+ }
+ }
+ if(mCanSlide && (!mIsUnableToDrag || i == 0)) goto _L2; else goto _L1
+_L1:
+ mDragHelper.cancel();
+ flag = super.onInterceptTouchEvent(motionevent);
+_L8:
+ return flag;
+_L2:
+ boolean flag1;
+ if(i == 3 || i == 1)
+ {
+ mDragHelper.cancel();
+ flag = false;
+ continue; /* Loop/switch isn't completed */
+ }
+ flag1 = false;
+ i;
+ JVM INSTR tableswitch 0 2: default 160
+ // 0 181
+ // 1 160
+ // 2 247;
+ goto _L3 _L4 _L3 _L5
+_L3:
+ float f;
+ float f1;
+ float f2;
+ float f3;
+ float f4;
+ float f5;
+ if(mDragHelper.shouldInterceptTouchEvent(motionevent) || flag1)
+ flag = true;
+ else
+ flag = false;
+ continue; /* Loop/switch isn't completed */
+_L4:
+ mIsUnableToDrag = false;
+ f4 = motionevent.getX();
+ f5 = motionevent.getY();
+ mInitialMotionX = f4;
+ mInitialMotionY = f5;
+ if(mDragHelper.isViewUnder(mSlideableView, (int)f4, (int)f5) && isDimmed(mSlideableView))
+ flag1 = true;
+ goto _L3
+_L5:
+ f = motionevent.getX();
+ f1 = motionevent.getY();
+ f2 = Math.abs(f - mInitialMotionX);
+ f3 = Math.abs(f1 - mInitialMotionY);
+ if(f2 <= (float)mDragHelper.getTouchSlop() || f3 <= f2) goto _L3; else goto _L6
+_L6:
+ mDragHelper.cancel();
+ mIsUnableToDrag = true;
+ flag = false;
+ if(true) goto _L8; else goto _L7
+_L7:
+ }
+
+ protected void onLayout(boolean flag, int i, int j, int k, int l)
+ {
+ boolean flag1 = isLayoutRtlSupport();
+ int i1;
+ int j1;
+ int k1;
+ int l1;
+ int i2;
+ int j2;
+ int k2;
+ if(flag1)
+ mDragHelper.setEdgeTrackingEnabled(2);
+ else
+ mDragHelper.setEdgeTrackingEnabled(1);
+ i1 = k - i;
+ if(flag1)
+ j1 = getPaddingRight();
+ else
+ j1 = getPaddingLeft();
+ if(flag1)
+ k1 = getPaddingLeft();
+ else
+ k1 = getPaddingRight();
+ l1 = getPaddingTop();
+ i2 = getChildCount();
+ j2 = j1;
+ k2 = j2;
+ if(mFirstLayout)
+ {
+ int l2;
+ float f;
+ if(mCanSlide && mPreservedOpenState)
+ f = 1.0F;
+ else
+ f = 0.0F;
+ mSlideOffset = f;
+ }
+ l2 = 0;
+ while(l2 < i2)
+ {
+ View view = getChildAt(l2);
+ if(view.getVisibility() != 8)
+ {
+ LayoutParams layoutparams = (LayoutParams)view.getLayoutParams();
+ int j3 = view.getMeasuredWidth();
+ int k3 = 0;
+ int l3;
+ int i4;
+ if(layoutparams.slideable)
+ {
+ int j4 = layoutparams.leftMargin + layoutparams.rightMargin;
+ int k4 = i1 - k1 - mOverhangSize;
+ int l4 = Math.min(k2, k4) - j2 - j4;
+ mSlideRange = l4;
+ int i5;
+ boolean flag2;
+ int j5;
+ if(flag1)
+ i5 = layoutparams.rightMargin;
+ else
+ i5 = layoutparams.leftMargin;
+ if(l4 + (j2 + i5) + j3 / 2 > i1 - k1)
+ flag2 = true;
+ else
+ flag2 = false;
+ layoutparams.dimWhenOffset = flag2;
+ j5 = (int)((float)l4 * mSlideOffset);
+ j2 += j5 + i5;
+ mSlideOffset = (float)j5 / (float)mSlideRange;
+ } else
+ if(mCanSlide && mParallaxBy != 0)
+ {
+ k3 = (int)((1.0F - mSlideOffset) * (float)mParallaxBy);
+ j2 = k2;
+ } else
+ {
+ j2 = k2;
+ }
+ if(flag1)
+ {
+ i4 = k3 + (i1 - j2);
+ l3 = i4 - j3;
+ } else
+ {
+ l3 = j2 - k3;
+ i4 = l3 + j3;
+ }
+ view.layout(l3, l1, i4, l1 + view.getMeasuredHeight());
+ k2 += view.getWidth();
+ }
+ l2++;
+ }
+ if(mFirstLayout)
+ {
+ if(mCanSlide)
+ {
+ if(mParallaxBy != 0)
+ parallaxOtherViews(mSlideOffset);
+ if(((LayoutParams)mSlideableView.getLayoutParams()).dimWhenOffset)
+ dimChildView(mSlideableView, mSlideOffset, mSliderFadeColor);
+ } else
+ {
+ int i3 = 0;
+ while(i3 < i2)
+ {
+ dimChildView(getChildAt(i3), 0.0F, mSliderFadeColor);
+ i3++;
+ }
+ }
+ updateObscuredViewsVisibility(mSlideableView);
+ }
+ mFirstLayout = false;
+ }
+
+ protected void onMeasure(int i, int j)
+ {
+ int k;
+ int l;
+ int i1;
+ int j1;
+ k = android.view.View.MeasureSpec.getMode(i);
+ l = android.view.View.MeasureSpec.getSize(i);
+ i1 = android.view.View.MeasureSpec.getMode(j);
+ j1 = android.view.View.MeasureSpec.getSize(j);
+ if(k == 0x40000000) goto _L2; else goto _L1
+_L1:
+ if(!isInEditMode()) goto _L4; else goto _L3
+_L13:
+ int k1;
+ int l1;
+ k1 = 0;
+ l1 = -1;
+ i1;
+ JVM INSTR lookupswitch 2: default 80
+ // -2147483648: 265
+ // 1073741824: 244;
+ goto _L5 _L6 _L7
+_L5:
+ float f;
+ boolean flag;
+ int i2;
+ int j2;
+ int k2;
+ int l2;
+ f = 0.0F;
+ flag = false;
+ i2 = l - getPaddingLeft() - getPaddingRight();
+ j2 = i2;
+ k2 = getChildCount();
+ if(k2 > 2)
+ Log.e("SlidingPaneLayout", "onMeasure: More than two child views are not supported.");
+ mSlideableView = null;
+ l2 = 0;
+_L12:
+ if(l2 >= k2) goto _L9; else goto _L8
+_L8:
+ View view1;
+ LayoutParams layoutparams1;
+ view1 = getChildAt(l2);
+ layoutparams1 = (LayoutParams)view1.getLayoutParams();
+ if(view1.getVisibility() != 8) goto _L11; else goto _L10
+_L10:
+ layoutparams1.dimWhenOffset = false;
+_L16:
+ l2++;
+ goto _L12
+_L3:
+ if(k != 0x80000000 && k == 0)
+ l = 300;
+ goto _L13
+_L4:
+ throw new IllegalStateException("Width must have an exact value or MATCH_PARENT");
+_L2:
+ if(i1 == 0)
+ if(isInEditMode())
+ {
+ if(i1 == 0)
+ {
+ i1 = 0x80000000;
+ j1 = 300;
+ }
+ } else
+ {
+ throw new IllegalStateException("Height must not be UNSPECIFIED");
+ }
+ continue; /* Loop/switch isn't completed */
+_L7:
+ l1 = j1 - getPaddingTop() - getPaddingBottom();
+ k1 = l1;
+ goto _L5
+_L6:
+ l1 = j1 - getPaddingTop() - getPaddingBottom();
+ goto _L5
+_L11:
+ if(layoutparams1.weight <= 0.0F) goto _L15; else goto _L14
+_L14:
+ f += layoutparams1.weight;
+ if(layoutparams1.width == 0) goto _L16; else goto _L15
+_L15:
+ int i5 = layoutparams1.leftMargin + layoutparams1.rightMargin;
+ int j5;
+ int k5;
+ int l5;
+ int i6;
+ boolean flag2;
+ if(layoutparams1.width == -2)
+ j5 = android.view.View.MeasureSpec.makeMeasureSpec(i2 - i5, 0x80000000);
+ else
+ if(layoutparams1.width == -1)
+ j5 = android.view.View.MeasureSpec.makeMeasureSpec(i2 - i5, 0x40000000);
+ else
+ j5 = android.view.View.MeasureSpec.makeMeasureSpec(layoutparams1.width, 0x40000000);
+ if(layoutparams1.height == -2)
+ k5 = android.view.View.MeasureSpec.makeMeasureSpec(l1, 0x80000000);
+ else
+ if(layoutparams1.height == -1)
+ k5 = android.view.View.MeasureSpec.makeMeasureSpec(l1, 0x40000000);
+ else
+ k5 = android.view.View.MeasureSpec.makeMeasureSpec(layoutparams1.height, 0x40000000);
+ view1.measure(j5, k5);
+ l5 = view1.getMeasuredWidth();
+ i6 = view1.getMeasuredHeight();
+ if(i1 == 0x80000000 && i6 > k1)
+ k1 = Math.min(i6, l1);
+ j2 -= l5;
+ if(j2 < 0)
+ flag2 = true;
+ else
+ flag2 = false;
+ layoutparams1.slideable = flag2;
+ flag |= flag2;
+ if(layoutparams1.slideable)
+ mSlideableView = view1;
+ goto _L16
+_L9:
+ if(flag || f > 0.0F)
+ {
+ int i3 = i2 - mOverhangSize;
+ int j3 = 0;
+ while(j3 < k2)
+ {
+ View view = getChildAt(j3);
+ if(view.getVisibility() != 8)
+ {
+ LayoutParams layoutparams = (LayoutParams)view.getLayoutParams();
+ if(view.getVisibility() != 8)
+ {
+ boolean flag1;
+ int k3;
+ if(layoutparams.width == 0 && layoutparams.weight > 0.0F)
+ flag1 = true;
+ else
+ flag1 = false;
+ if(flag1)
+ k3 = 0;
+ else
+ k3 = view.getMeasuredWidth();
+ if(flag && view != mSlideableView)
+ {
+ if(layoutparams.width < 0 && (k3 > i3 || layoutparams.weight > 0.0F))
+ {
+ int l4;
+ if(flag1)
+ {
+ if(layoutparams.height == -2)
+ l4 = android.view.View.MeasureSpec.makeMeasureSpec(l1, 0x80000000);
+ else
+ if(layoutparams.height == -1)
+ l4 = android.view.View.MeasureSpec.makeMeasureSpec(l1, 0x40000000);
+ else
+ l4 = android.view.View.MeasureSpec.makeMeasureSpec(layoutparams.height, 0x40000000);
+ } else
+ {
+ l4 = android.view.View.MeasureSpec.makeMeasureSpec(view.getMeasuredHeight(), 0x40000000);
+ }
+ view.measure(android.view.View.MeasureSpec.makeMeasureSpec(i3, 0x40000000), l4);
+ }
+ } else
+ if(layoutparams.weight > 0.0F)
+ {
+ int l3;
+ if(layoutparams.width == 0)
+ {
+ if(layoutparams.height == -2)
+ l3 = android.view.View.MeasureSpec.makeMeasureSpec(l1, 0x80000000);
+ else
+ if(layoutparams.height == -1)
+ l3 = android.view.View.MeasureSpec.makeMeasureSpec(l1, 0x40000000);
+ else
+ l3 = android.view.View.MeasureSpec.makeMeasureSpec(layoutparams.height, 0x40000000);
+ } else
+ {
+ l3 = android.view.View.MeasureSpec.makeMeasureSpec(view.getMeasuredHeight(), 0x40000000);
+ }
+ if(flag)
+ {
+ int j4 = i2 - (layoutparams.leftMargin + layoutparams.rightMargin);
+ int k4 = android.view.View.MeasureSpec.makeMeasureSpec(j4, 0x40000000);
+ if(k3 != j4)
+ view.measure(k4, l3);
+ } else
+ {
+ int i4 = Math.max(0, j2);
+ view.measure(android.view.View.MeasureSpec.makeMeasureSpec(k3 + (int)((layoutparams.weight * (float)i4) / f), 0x40000000), l3);
+ }
+ }
+ }
+ }
+ j3++;
+ }
+ }
+ setMeasuredDimension(l, k1 + getPaddingTop() + getPaddingBottom());
+ mCanSlide = flag;
+ if(mDragHelper.getViewDragState() != 0 && !flag)
+ mDragHelper.abort();
+ return;
+ if(true) goto _L13; else goto _L17
+_L17:
+ }
+
+ protected void onRestoreInstanceState(Parcelable parcelable)
+ {
+ SavedState savedstate = (SavedState)parcelable;
+ super.onRestoreInstanceState(savedstate.getSuperState());
+ if(savedstate.isOpen)
+ openPane();
+ else
+ closePane();
+ mPreservedOpenState = savedstate.isOpen;
+ }
+
+ protected Parcelable onSaveInstanceState()
+ {
+ SavedState savedstate = new SavedState(super.onSaveInstanceState());
+ boolean flag;
+ if(isSlideable())
+ flag = isOpen();
+ else
+ flag = mPreservedOpenState;
+ savedstate.isOpen = flag;
+ return savedstate;
+ }
+
+ protected void onSizeChanged(int i, int j, int k, int l)
+ {
+ super.onSizeChanged(i, j, k, l);
+ if(i != k)
+ mFirstLayout = true;
+ }
+
+ public boolean onTouchEvent(MotionEvent motionevent)
+ {
+ if(mCanSlide) goto _L2; else goto _L1
+_L1:
+ boolean flag = super.onTouchEvent(motionevent);
+_L4:
+ return flag;
+_L2:
+ mDragHelper.processTouchEvent(motionevent);
+ int i = motionevent.getAction();
+ flag = true;
+ switch(i & 0xff)
+ {
+ case 0: // '\0'
+ float f4 = motionevent.getX();
+ float f5 = motionevent.getY();
+ mInitialMotionX = f4;
+ mInitialMotionY = f5;
+ break;
+
+ case 1: // '\001'
+ if(isDimmed(mSlideableView))
+ {
+ float f = motionevent.getX();
+ float f1 = motionevent.getY();
+ float f2 = f - mInitialMotionX;
+ float f3 = f1 - mInitialMotionY;
+ int j = mDragHelper.getTouchSlop();
+ if(f2 * f2 + f3 * f3 < (float)(j * j) && mDragHelper.isViewUnder(mSlideableView, (int)f, (int)f1))
+ closePane(mSlideableView, 0);
+ }
+ break;
+ }
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ public boolean openPane()
+ {
+ return openPane(mSlideableView, 0);
+ }
+
+ public void requestChildFocus(View view, View view1)
+ {
+ super.requestChildFocus(view, view1);
+ if(!isInTouchMode() && !mCanSlide)
+ {
+ boolean flag;
+ if(view == mSlideableView)
+ flag = true;
+ else
+ flag = false;
+ mPreservedOpenState = flag;
+ }
+ }
+
+ void setAllChildrenVisible()
+ {
+ int i = 0;
+ for(int j = getChildCount(); i < j; i++)
+ {
+ View view = getChildAt(i);
+ if(view.getVisibility() == 4)
+ view.setVisibility(0);
+ }
+
+ }
+
+ public void setCoveredFadeColor(int i)
+ {
+ mCoveredFadeColor = i;
+ }
+
+ public void setPanelSlideListener(PanelSlideListener panelslidelistener)
+ {
+ mPanelSlideListener = panelslidelistener;
+ }
+
+ public void setParallaxDistance(int i)
+ {
+ mParallaxBy = i;
+ requestLayout();
+ }
+
+ public void setShadowDrawable(Drawable drawable)
+ {
+ setShadowDrawableLeft(drawable);
+ }
+
+ public void setShadowDrawableLeft(Drawable drawable)
+ {
+ mShadowDrawableLeft = drawable;
+ }
+
+ public void setShadowDrawableRight(Drawable drawable)
+ {
+ mShadowDrawableRight = drawable;
+ }
+
+ public void setShadowResource(int i)
+ {
+ setShadowDrawable(getResources().getDrawable(i));
+ }
+
+ public void setShadowResourceLeft(int i)
+ {
+ setShadowDrawableLeft(getResources().getDrawable(i));
+ }
+
+ public void setShadowResourceRight(int i)
+ {
+ setShadowDrawableRight(getResources().getDrawable(i));
+ }
+
+ public void setSliderFadeColor(int i)
+ {
+ mSliderFadeColor = i;
+ }
+
+ public void smoothSlideClosed()
+ {
+ closePane();
+ }
+
+ public void smoothSlideOpen()
+ {
+ openPane();
+ }
+
+ boolean smoothSlideTo(float f, int i)
+ {
+ boolean flag = false;
+ if(mCanSlide) goto _L2; else goto _L1
+_L1:
+ return flag;
+_L2:
+ boolean flag1 = isLayoutRtlSupport();
+ LayoutParams layoutparams = (LayoutParams)mSlideableView.getLayoutParams();
+ int j;
+ if(flag1)
+ {
+ int k = getPaddingRight() + layoutparams.rightMargin;
+ int l = mSlideableView.getWidth();
+ j = (int)((float)getWidth() - ((float)k + f * (float)mSlideRange + (float)l));
+ } else
+ {
+ j = (int)((float)(getPaddingLeft() + layoutparams.leftMargin) + f * (float)mSlideRange);
+ }
+ if(mDragHelper.smoothSlideViewTo(mSlideableView, j, mSlideableView.getTop()))
+ {
+ setAllChildrenVisible();
+ ViewCompat.postInvalidateOnAnimation(this);
+ flag = true;
+ }
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ void updateObscuredViewsVisibility(View view)
+ {
+ boolean flag = isLayoutRtlSupport();
+ int i;
+ int j;
+ int k;
+ int l;
+ int i1;
+ int j1;
+ int k1;
+ int l1;
+ int i2;
+ int j2;
+ if(flag)
+ i = getWidth() - getPaddingRight();
+ else
+ i = getPaddingLeft();
+ if(flag)
+ j = getPaddingLeft();
+ else
+ j = getWidth() - getPaddingRight();
+ k = getPaddingTop();
+ l = getHeight() - getPaddingBottom();
+ if(view != null && viewIsOpaque(view))
+ {
+ l1 = view.getLeft();
+ k1 = view.getRight();
+ j1 = view.getTop();
+ i1 = view.getBottom();
+ } else
+ {
+ i1 = 0;
+ j1 = 0;
+ k1 = 0;
+ l1 = 0;
+ }
+ i2 = 0;
+ j2 = getChildCount();
+ do
+ {
+ View view1;
+label0:
+ {
+ if(i2 < j2)
+ {
+ view1 = getChildAt(i2);
+ if(view1 != view)
+ break label0;
+ }
+ return;
+ }
+ int k2;
+ int l2;
+ int i3;
+ int j3;
+ int k3;
+ int l3;
+ byte byte0;
+ if(flag)
+ k2 = j;
+ else
+ k2 = i;
+ l2 = Math.max(k2, view1.getLeft());
+ i3 = Math.max(k, view1.getTop());
+ if(flag)
+ j3 = i;
+ else
+ j3 = j;
+ k3 = Math.min(j3, view1.getRight());
+ l3 = Math.min(l, view1.getBottom());
+ if(l2 >= l1 && i3 >= j1 && k3 <= k1 && l3 <= i1)
+ byte0 = 4;
+ else
+ byte0 = 0;
+ view1.setVisibility(byte0);
+ i2++;
+ } while(true);
+ }
+
+ private static final int DEFAULT_FADE_COLOR = 0xcccccccc;
+ private static final int DEFAULT_OVERHANG_SIZE = 32;
+ static final SlidingPanelLayoutImpl IMPL;
+ private static final int MIN_FLING_VELOCITY = 400;
+ private static final String TAG = "SlidingPaneLayout";
+ private boolean mCanSlide;
+ private int mCoveredFadeColor;
+ private final ViewDragHelper mDragHelper;
+ private boolean mFirstLayout;
+ private float mInitialMotionX;
+ private float mInitialMotionY;
+ private boolean mIsUnableToDrag;
+ private final int mOverhangSize;
+ private PanelSlideListener mPanelSlideListener;
+ private int mParallaxBy;
+ private float mParallaxOffset;
+ private final ArrayList mPostedRunnables;
+ private boolean mPreservedOpenState;
+ private Drawable mShadowDrawableLeft;
+ private Drawable mShadowDrawableRight;
+ private float mSlideOffset;
+ private int mSlideRange;
+ private View mSlideableView;
+ private int mSliderFadeColor;
+ private final Rect mTmpRect;
+
+ static
+ {
+ int i = android.os.Build.VERSION.SDK_INT;
+ if(i >= 17)
+ IMPL = new SlidingPanelLayoutImplJBMR1();
+ else
+ if(i >= 16)
+ IMPL = new SlidingPanelLayoutImplJB();
+ else
+ IMPL = new SlidingPanelLayoutImplBase();
+ }
+
+
+
+
+
+
+
+
+/*
+ static boolean access$502(SlidingPaneLayout slidingpanelayout, boolean flag)
+ {
+ slidingpanelayout.mPreservedOpenState = flag;
+ return flag;
+ }
+
+*/
+
+
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/SwipeProgressBar.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/SwipeProgressBar.java
new file mode 100644
index 0000000..275477b
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/SwipeProgressBar.java
@@ -0,0 +1,214 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+import android.graphics.*;
+import android.support.v4.view.ViewCompat;
+import android.view.View;
+import android.view.animation.AnimationUtils;
+import android.view.animation.Interpolator;
+
+// Referenced classes of package android.support.v4.widget:
+// BakedBezierInterpolator
+
+final class SwipeProgressBar
+{
+
+ public SwipeProgressBar(View view)
+ {
+ mBounds = new Rect();
+ mParent = view;
+ mColor1 = 0xb3000000;
+ mColor2 = 0x80000000;
+ mColor3 = 0x4d000000;
+ mColor4 = 0x1a000000;
+ }
+
+ private void drawCircle(Canvas canvas, float f, float f1, int i, float f2)
+ {
+ mPaint.setColor(i);
+ canvas.save();
+ canvas.translate(f, f1);
+ float f3 = INTERPOLATOR.getInterpolation(f2);
+ canvas.scale(f3, f3);
+ canvas.drawCircle(0.0F, 0.0F, f, mPaint);
+ canvas.restore();
+ }
+
+ private void drawTrigger(Canvas canvas, int i, int j)
+ {
+ mPaint.setColor(mColor1);
+ canvas.drawCircle(i, j, (float)i * mTriggerPercentage, mPaint);
+ }
+
+ void draw(Canvas canvas)
+ {
+ int i;
+ int j;
+ int k;
+ int l;
+ boolean flag;
+ int i1;
+ i = mBounds.width();
+ j = mBounds.height();
+ k = i / 2;
+ l = j / 2;
+ flag = false;
+ i1 = canvas.save();
+ canvas.clipRect(mBounds);
+ if(!mRunning && mFinishTime <= 0L) goto _L2; else goto _L1
+_L1:
+ long l1;
+ long l3;
+ float f;
+ l1 = AnimationUtils.currentAnimationTimeMillis();
+ long l2 = (l1 - mStartTime) % 2000L;
+ l3 = (l1 - mStartTime) / 2000L;
+ f = (float)l2 / 20F;
+ if(mRunning) goto _L4; else goto _L3
+_L3:
+ if(l1 - mFinishTime < 1000L) goto _L6; else goto _L5
+_L5:
+ mFinishTime = 0L;
+_L7:
+ return;
+_L6:
+ float f6 = (float)((l1 - mFinishTime) % 1000L) / 10F / 100F;
+ float f7 = (float)(i / 2) * INTERPOLATOR.getInterpolation(f6);
+ mClipRect.set((float)k - f7, 0.0F, f7 + (float)k, j);
+ canvas.saveLayerAlpha(mClipRect, 0, 0);
+ flag = true;
+_L4:
+ if(l3 == 0L)
+ canvas.drawColor(mColor1);
+ else
+ if(f >= 0.0F && f < 25F)
+ canvas.drawColor(mColor4);
+ else
+ if(f >= 25F && f < 50F)
+ canvas.drawColor(mColor1);
+ else
+ if(f >= 50F && f < 75F)
+ canvas.drawColor(mColor2);
+ else
+ canvas.drawColor(mColor3);
+ if(f >= 0.0F && f <= 25F)
+ {
+ float f5 = (2.0F * (25F + f)) / 100F;
+ drawCircle(canvas, k, l, mColor1, f5);
+ }
+ if(f >= 0.0F && f <= 50F)
+ {
+ float f4 = (2.0F * f) / 100F;
+ drawCircle(canvas, k, l, mColor2, f4);
+ }
+ if(f >= 25F && f <= 75F)
+ {
+ float f3 = (2.0F * (f - 25F)) / 100F;
+ drawCircle(canvas, k, l, mColor3, f3);
+ }
+ if(f >= 50F && f <= 100F)
+ {
+ float f2 = (2.0F * (f - 50F)) / 100F;
+ drawCircle(canvas, k, l, mColor4, f2);
+ }
+ if(f >= 75F && f <= 100F)
+ {
+ float f1 = (2.0F * (f - 75F)) / 100F;
+ drawCircle(canvas, k, l, mColor1, f1);
+ }
+ if(mTriggerPercentage > 0.0F && flag)
+ {
+ canvas.restoreToCount(i1);
+ i1 = canvas.save();
+ canvas.clipRect(mBounds);
+ drawTrigger(canvas, k, l);
+ }
+ ViewCompat.postInvalidateOnAnimation(mParent, mBounds.left, mBounds.top, mBounds.right, mBounds.bottom);
+_L8:
+ canvas.restoreToCount(i1);
+ if(true) goto _L7; else goto _L2
+_L2:
+ if(mTriggerPercentage > 0.0F && (double)mTriggerPercentage <= 1.0D)
+ drawTrigger(canvas, k, l);
+ goto _L8
+ }
+
+ boolean isRunning()
+ {
+ boolean flag;
+ if(mRunning || mFinishTime > 0L)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ void setBounds(int i, int j, int k, int l)
+ {
+ mBounds.left = i;
+ mBounds.top = j;
+ mBounds.right = k;
+ mBounds.bottom = l;
+ }
+
+ void setColorScheme(int i, int j, int k, int l)
+ {
+ mColor1 = i;
+ mColor2 = j;
+ mColor3 = k;
+ mColor4 = l;
+ }
+
+ void setTriggerPercentage(float f)
+ {
+ mTriggerPercentage = f;
+ mStartTime = 0L;
+ ViewCompat.postInvalidateOnAnimation(mParent, mBounds.left, mBounds.top, mBounds.right, mBounds.bottom);
+ }
+
+ void start()
+ {
+ if(!mRunning)
+ {
+ mTriggerPercentage = 0.0F;
+ mStartTime = AnimationUtils.currentAnimationTimeMillis();
+ mRunning = true;
+ mParent.postInvalidate();
+ }
+ }
+
+ void stop()
+ {
+ if(mRunning)
+ {
+ mTriggerPercentage = 0.0F;
+ mFinishTime = AnimationUtils.currentAnimationTimeMillis();
+ mRunning = false;
+ mParent.postInvalidate();
+ }
+ }
+
+ private static final int ANIMATION_DURATION_MS = 2000;
+ private static final int COLOR1 = 0xb3000000;
+ private static final int COLOR2 = 0x80000000;
+ private static final int COLOR3 = 0x4d000000;
+ private static final int COLOR4 = 0x1a000000;
+ private static final int FINISH_ANIMATION_DURATION_MS = 1000;
+ private static final Interpolator INTERPOLATOR = BakedBezierInterpolator.getInstance();
+ private Rect mBounds;
+ private final RectF mClipRect = new RectF();
+ private int mColor1;
+ private int mColor2;
+ private int mColor3;
+ private int mColor4;
+ private long mFinishTime;
+ private final Paint mPaint = new Paint();
+ private View mParent;
+ private boolean mRunning;
+ private long mStartTime;
+ private float mTriggerPercentage;
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/SwipeRefreshLayout.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/SwipeRefreshLayout.java
new file mode 100644
index 0000000..ecec5d5
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/SwipeRefreshLayout.java
@@ -0,0 +1,948 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.content.res.TypedArray;
+import android.graphics.drawable.Drawable;
+import android.support.v4.view.MotionEventCompat;
+import android.support.v4.view.ViewCompat;
+import android.util.*;
+import android.view.*;
+import android.view.animation.*;
+import android.widget.AbsListView;
+
+// Referenced classes of package android.support.v4.widget:
+// CircleImageView, MaterialProgressDrawable
+
+public class SwipeRefreshLayout extends ViewGroup
+{
+ public static interface OnRefreshListener
+ {
+
+ public abstract void onRefresh();
+ }
+
+
+ public SwipeRefreshLayout(Context context)
+ {
+ this(context, null);
+ }
+
+ public SwipeRefreshLayout(Context context, AttributeSet attributeset)
+ {
+ super(context, attributeset);
+ mRefreshing = false;
+ mTotalDragDistance = -1F;
+ mOriginalOffsetCalculated = false;
+ mActivePointerId = -1;
+ mCircleViewIndex = -1;
+ mAnimateToCorrectPosition = new Animation() {
+
+ public void applyTransformation(float f, Transformation transformation)
+ {
+ int i;
+ int j;
+ if(!mUsingCustomStart)
+ i = (int)(mSpinnerFinalOffset - (float)Math.abs(mOriginalOffsetTop));
+ else
+ i = (int)mSpinnerFinalOffset;
+ j = (mFrom + (int)(f * (float)(i - mFrom))) - mCircleView.getTop();
+ setTargetOffsetTopAndBottom(j, false);
+ mProgress.setArrowScale(1.0F - f);
+ }
+
+ final SwipeRefreshLayout this$0;
+
+
+ {
+ this$0 = SwipeRefreshLayout.this;
+ super();
+ }
+ }
+;
+ mAnimateToStartPosition = new Animation() {
+
+ public void applyTransformation(float f, Transformation transformation)
+ {
+ moveToStart(f);
+ }
+
+ final SwipeRefreshLayout this$0;
+
+
+ {
+ this$0 = SwipeRefreshLayout.this;
+ super();
+ }
+ }
+;
+ mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
+ mMediumAnimationDuration = getResources().getInteger(0x10e0001);
+ setWillNotDraw(false);
+ mDecelerateInterpolator = new DecelerateInterpolator(2.0F);
+ TypedArray typedarray = context.obtainStyledAttributes(attributeset, LAYOUT_ATTRS);
+ setEnabled(typedarray.getBoolean(0, true));
+ typedarray.recycle();
+ DisplayMetrics displaymetrics = getResources().getDisplayMetrics();
+ mCircleWidth = (int)(40F * displaymetrics.density);
+ mCircleHeight = (int)(40F * displaymetrics.density);
+ createProgressView();
+ ViewCompat.setChildrenDrawingOrderEnabled(this, true);
+ mSpinnerFinalOffset = 64F * displaymetrics.density;
+ mTotalDragDistance = mSpinnerFinalOffset;
+ }
+
+ private void animateOffsetToCorrectPosition(int i, android.view.animation.Animation.AnimationListener animationlistener)
+ {
+ mFrom = i;
+ mAnimateToCorrectPosition.reset();
+ mAnimateToCorrectPosition.setDuration(200L);
+ mAnimateToCorrectPosition.setInterpolator(mDecelerateInterpolator);
+ if(animationlistener != null)
+ mCircleView.setAnimationListener(animationlistener);
+ mCircleView.clearAnimation();
+ mCircleView.startAnimation(mAnimateToCorrectPosition);
+ }
+
+ private void animateOffsetToStartPosition(int i, android.view.animation.Animation.AnimationListener animationlistener)
+ {
+ if(mScale)
+ {
+ startScaleDownReturnToStartAnimation(i, animationlistener);
+ } else
+ {
+ mFrom = i;
+ mAnimateToStartPosition.reset();
+ mAnimateToStartPosition.setDuration(200L);
+ mAnimateToStartPosition.setInterpolator(mDecelerateInterpolator);
+ if(animationlistener != null)
+ mCircleView.setAnimationListener(animationlistener);
+ mCircleView.clearAnimation();
+ mCircleView.startAnimation(mAnimateToStartPosition);
+ }
+ }
+
+ private void createProgressView()
+ {
+ mCircleView = new CircleImageView(getContext(), 0xfffafafa, 20F);
+ mProgress = new MaterialProgressDrawable(getContext(), this);
+ mProgress.setBackgroundColor(0xfffafafa);
+ mCircleView.setImageDrawable(mProgress);
+ mCircleView.setVisibility(8);
+ addView(mCircleView);
+ }
+
+ private void ensureTarget()
+ {
+ if(mTarget != null) goto _L2; else goto _L1
+_L1:
+ int i = 0;
+_L7:
+ if(i >= getChildCount()) goto _L2; else goto _L3
+_L3:
+ View view = getChildAt(i);
+ if(view.equals(mCircleView)) goto _L5; else goto _L4
+_L4:
+ mTarget = view;
+_L2:
+ return;
+_L5:
+ i++;
+ if(true) goto _L7; else goto _L6
+_L6:
+ }
+
+ private float getMotionEventY(MotionEvent motionevent, int i)
+ {
+ int j = MotionEventCompat.findPointerIndex(motionevent, i);
+ float f;
+ if(j < 0)
+ f = -1F;
+ else
+ f = MotionEventCompat.getY(motionevent, j);
+ return f;
+ }
+
+ private boolean isAlphaUsedForScale()
+ {
+ boolean flag;
+ if(android.os.Build.VERSION.SDK_INT < 11)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ private boolean isAnimationRunning(Animation animation)
+ {
+ boolean flag;
+ if(animation != null && animation.hasStarted() && !animation.hasEnded())
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ private void moveToStart(float f)
+ {
+ setTargetOffsetTopAndBottom((mFrom + (int)(f * (float)(mOriginalOffsetTop - mFrom))) - mCircleView.getTop(), false);
+ }
+
+ private void onSecondaryPointerUp(MotionEvent motionevent)
+ {
+ int i = MotionEventCompat.getActionIndex(motionevent);
+ if(MotionEventCompat.getPointerId(motionevent, i) == mActivePointerId)
+ {
+ int j;
+ if(i == 0)
+ j = 1;
+ else
+ j = 0;
+ mActivePointerId = MotionEventCompat.getPointerId(motionevent, j);
+ }
+ }
+
+ private void setAnimationProgress(float f)
+ {
+ if(isAlphaUsedForScale())
+ {
+ setColorViewAlpha((int)(255F * f));
+ } else
+ {
+ ViewCompat.setScaleX(mCircleView, f);
+ ViewCompat.setScaleY(mCircleView, f);
+ }
+ }
+
+ private void setColorViewAlpha(int i)
+ {
+ mCircleView.getBackground().setAlpha(i);
+ mProgress.setAlpha(i);
+ }
+
+ private void setRefreshing(boolean flag, boolean flag1)
+ {
+ if(mRefreshing != flag)
+ {
+ mNotify = flag1;
+ ensureTarget();
+ mRefreshing = flag;
+ if(mRefreshing)
+ animateOffsetToCorrectPosition(mCurrentTargetOffsetTop, mRefreshListener);
+ else
+ startScaleDownAnimation(mRefreshListener);
+ }
+ }
+
+ private void setTargetOffsetTopAndBottom(int i, boolean flag)
+ {
+ mCircleView.bringToFront();
+ mCircleView.offsetTopAndBottom(i);
+ mCurrentTargetOffsetTop = mCircleView.getTop();
+ if(flag && android.os.Build.VERSION.SDK_INT < 11)
+ invalidate();
+ }
+
+ private Animation startAlphaAnimation(final int startingAlpha, final int endingAlpha)
+ {
+ Object obj;
+ if(mScale && isAlphaUsedForScale())
+ {
+ obj = null;
+ } else
+ {
+ obj = new Animation() {
+
+ public void applyTransformation(float f, Transformation transformation)
+ {
+ mProgress.setAlpha((int)((float)startingAlpha + f * (float)(endingAlpha - startingAlpha)));
+ }
+
+ final SwipeRefreshLayout this$0;
+ final int val$endingAlpha;
+ final int val$startingAlpha;
+
+
+ {
+ this$0 = SwipeRefreshLayout.this;
+ startingAlpha = i;
+ endingAlpha = j;
+ super();
+ }
+ }
+;
+ ((Animation) (obj)).setDuration(300L);
+ mCircleView.setAnimationListener(null);
+ mCircleView.clearAnimation();
+ mCircleView.startAnimation(((Animation) (obj)));
+ }
+ return ((Animation) (obj));
+ }
+
+ private void startProgressAlphaMaxAnimation()
+ {
+ mAlphaMaxAnimation = startAlphaAnimation(mProgress.getAlpha(), 255);
+ }
+
+ private void startProgressAlphaStartAnimation()
+ {
+ mAlphaStartAnimation = startAlphaAnimation(mProgress.getAlpha(), 76);
+ }
+
+ private void startScaleDownAnimation(android.view.animation.Animation.AnimationListener animationlistener)
+ {
+ mScaleDownAnimation = new Animation() {
+
+ public void applyTransformation(float f, Transformation transformation)
+ {
+ setAnimationProgress(1.0F - f);
+ }
+
+ final SwipeRefreshLayout this$0;
+
+
+ {
+ this$0 = SwipeRefreshLayout.this;
+ super();
+ }
+ }
+;
+ mScaleDownAnimation.setDuration(150L);
+ mCircleView.setAnimationListener(animationlistener);
+ mCircleView.clearAnimation();
+ mCircleView.startAnimation(mScaleDownAnimation);
+ }
+
+ private void startScaleDownReturnToStartAnimation(int i, android.view.animation.Animation.AnimationListener animationlistener)
+ {
+ mFrom = i;
+ if(isAlphaUsedForScale())
+ mStartingScale = mProgress.getAlpha();
+ else
+ mStartingScale = ViewCompat.getScaleX(mCircleView);
+ mScaleDownToStartAnimation = new Animation() {
+
+ public void applyTransformation(float f, Transformation transformation)
+ {
+ float f1 = mStartingScale + f * -mStartingScale;
+ setAnimationProgress(f1);
+ moveToStart(f);
+ }
+
+ final SwipeRefreshLayout this$0;
+
+
+ {
+ this$0 = SwipeRefreshLayout.this;
+ super();
+ }
+ }
+;
+ mScaleDownToStartAnimation.setDuration(150L);
+ if(animationlistener != null)
+ mCircleView.setAnimationListener(animationlistener);
+ mCircleView.clearAnimation();
+ mCircleView.startAnimation(mScaleDownToStartAnimation);
+ }
+
+ private void startScaleUpAnimation(android.view.animation.Animation.AnimationListener animationlistener)
+ {
+ mCircleView.setVisibility(0);
+ if(android.os.Build.VERSION.SDK_INT >= 11)
+ mProgress.setAlpha(255);
+ mScaleAnimation = new Animation() {
+
+ public void applyTransformation(float f, Transformation transformation)
+ {
+ setAnimationProgress(f);
+ }
+
+ final SwipeRefreshLayout this$0;
+
+
+ {
+ this$0 = SwipeRefreshLayout.this;
+ super();
+ }
+ }
+;
+ mScaleAnimation.setDuration(mMediumAnimationDuration);
+ if(animationlistener != null)
+ mCircleView.setAnimationListener(animationlistener);
+ mCircleView.clearAnimation();
+ mCircleView.startAnimation(mScaleAnimation);
+ }
+
+ public boolean canChildScrollUp()
+ {
+ boolean flag = true;
+ if(android.os.Build.VERSION.SDK_INT >= 14) goto _L2; else goto _L1
+_L1:
+ if(!(mTarget instanceof AbsListView)) goto _L4; else goto _L3
+_L3:
+ AbsListView abslistview = (AbsListView)mTarget;
+ if(abslistview.getChildCount() <= 0 || abslistview.getFirstVisiblePosition() <= 0 && abslistview.getChildAt(0).getTop() >= abslistview.getPaddingTop())
+ flag = false;
+_L6:
+ return flag;
+_L4:
+ if(mTarget.getScrollY() <= 0)
+ flag = false;
+ continue; /* Loop/switch isn't completed */
+_L2:
+ flag = ViewCompat.canScrollVertically(mTarget, -1);
+ if(true) goto _L6; else goto _L5
+_L5:
+ }
+
+ protected int getChildDrawingOrder(int i, int j)
+ {
+ if(mCircleViewIndex >= 0) goto _L2; else goto _L1
+_L1:
+ return j;
+_L2:
+ if(j == i - 1)
+ j = mCircleViewIndex;
+ else
+ if(j >= mCircleViewIndex)
+ j++;
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ public int getProgressCircleDiameter()
+ {
+ int i;
+ if(mCircleView != null)
+ i = mCircleView.getMeasuredHeight();
+ else
+ i = 0;
+ return i;
+ }
+
+ public boolean isRefreshing()
+ {
+ return mRefreshing;
+ }
+
+ public boolean onInterceptTouchEvent(MotionEvent motionevent)
+ {
+ boolean flag;
+ int i;
+ flag = false;
+ ensureTarget();
+ i = MotionEventCompat.getActionMasked(motionevent);
+ if(mReturningToStart && i == 0)
+ mReturningToStart = false;
+ if(isEnabled() && !mReturningToStart && !canChildScrollUp() && !mRefreshing) goto _L2; else goto _L1
+_L1:
+ return flag;
+_L2:
+ i;
+ JVM INSTR tableswitch 0 6: default 100
+ // 0 108
+ // 1 270
+ // 2 167
+ // 3 270
+ // 4 100
+ // 5 100
+ // 6 262;
+ goto _L3 _L4 _L5 _L6 _L5 _L3 _L3 _L7
+_L3:
+ break; /* Loop/switch isn't completed */
+_L5:
+ break MISSING_BLOCK_LABEL_270;
+_L9:
+ flag = mIsBeingDragged;
+ goto _L1
+_L4:
+ float f1;
+ setTargetOffsetTopAndBottom(mOriginalOffsetTop - mCircleView.getTop(), true);
+ mActivePointerId = MotionEventCompat.getPointerId(motionevent, 0);
+ mIsBeingDragged = false;
+ f1 = getMotionEventY(motionevent, mActivePointerId);
+ if(f1 == -1F) goto _L1; else goto _L8
+_L8:
+ mInitialDownY = f1;
+ goto _L9
+_L6:
+label0:
+ {
+ if(mActivePointerId != -1)
+ break label0;
+ Log.e(LOG_TAG, "Got ACTION_MOVE event but don't have an active pointer id.");
+ }
+ goto _L1
+ float f = getMotionEventY(motionevent, mActivePointerId);
+ if(f == -1F) goto _L1; else goto _L10
+_L10:
+ if(f - mInitialDownY > (float)mTouchSlop && !mIsBeingDragged)
+ {
+ mInitialMotionY = mInitialDownY + (float)mTouchSlop;
+ mIsBeingDragged = true;
+ mProgress.setAlpha(76);
+ }
+ goto _L9
+_L7:
+ onSecondaryPointerUp(motionevent);
+ goto _L9
+ mIsBeingDragged = false;
+ mActivePointerId = -1;
+ goto _L9
+ }
+
+ protected void onLayout(boolean flag, int i, int j, int k, int l)
+ {
+ int i1;
+ int j1;
+ i1 = getMeasuredWidth();
+ j1 = getMeasuredHeight();
+ if(getChildCount() != 0) goto _L2; else goto _L1
+_L1:
+ return;
+_L2:
+ if(mTarget == null)
+ ensureTarget();
+ if(mTarget != null)
+ {
+ View view = mTarget;
+ int k1 = getPaddingLeft();
+ int l1 = getPaddingTop();
+ int i2 = i1 - getPaddingLeft() - getPaddingRight();
+ int j2 = j1 - getPaddingTop() - getPaddingBottom();
+ view.layout(k1, l1, k1 + i2, l1 + j2);
+ int k2 = mCircleView.getMeasuredWidth();
+ int l2 = mCircleView.getMeasuredHeight();
+ mCircleView.layout(i1 / 2 - k2 / 2, mCurrentTargetOffsetTop, i1 / 2 + k2 / 2, l2 + mCurrentTargetOffsetTop);
+ }
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ public void onMeasure(int i, int j)
+ {
+ super.onMeasure(i, j);
+ if(mTarget == null)
+ ensureTarget();
+ if(mTarget != null) goto _L2; else goto _L1
+_L1:
+ return;
+_L2:
+ mTarget.measure(android.view.View.MeasureSpec.makeMeasureSpec(getMeasuredWidth() - getPaddingLeft() - getPaddingRight(), 0x40000000), android.view.View.MeasureSpec.makeMeasureSpec(getMeasuredHeight() - getPaddingTop() - getPaddingBottom(), 0x40000000));
+ mCircleView.measure(android.view.View.MeasureSpec.makeMeasureSpec(mCircleWidth, 0x40000000), android.view.View.MeasureSpec.makeMeasureSpec(mCircleHeight, 0x40000000));
+ if(!mUsingCustomStart && !mOriginalOffsetCalculated)
+ {
+ mOriginalOffsetCalculated = true;
+ int l = -mCircleView.getMeasuredHeight();
+ mOriginalOffsetTop = l;
+ mCurrentTargetOffsetTop = l;
+ }
+ mCircleViewIndex = -1;
+ int k = 0;
+ do
+ {
+ if(k < getChildCount())
+ {
+label0:
+ {
+ if(getChildAt(k) != mCircleView)
+ break label0;
+ mCircleViewIndex = k;
+ }
+ }
+ if(true)
+ continue;
+ k++;
+ } while(true);
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ public boolean onTouchEvent(MotionEvent motionevent)
+ {
+ int i;
+ i = MotionEventCompat.getActionMasked(motionevent);
+ if(mReturningToStart && i == 0)
+ mReturningToStart = false;
+ if(isEnabled() && !mReturningToStart && !canChildScrollUp()) goto _L2; else goto _L1
+_L1:
+ boolean flag = false;
+_L13:
+ return flag;
+_L2:
+ i;
+ JVM INSTR tableswitch 0 6: default 88
+ // 0 93
+ // 1 563
+ // 2 110
+ // 3 563
+ // 4 88
+ // 5 540
+ // 6 555;
+ goto _L3 _L4 _L5 _L6 _L5 _L3 _L7 _L8
+_L3:
+ flag = true;
+ continue; /* Loop/switch isn't completed */
+_L4:
+ mActivePointerId = MotionEventCompat.getPointerId(motionevent, 0);
+ mIsBeingDragged = false;
+ continue; /* Loop/switch isn't completed */
+_L6:
+ int j = MotionEventCompat.findPointerIndex(motionevent, mActivePointerId);
+ if(j < 0)
+ {
+ Log.e(LOG_TAG, "Got ACTION_MOVE event but have an invalid active pointer id.");
+ flag = false;
+ continue; /* Loop/switch isn't completed */
+ }
+ float f1 = 0.5F * (MotionEventCompat.getY(motionevent, j) - mInitialMotionY);
+ if(!mIsBeingDragged)
+ continue; /* Loop/switch isn't completed */
+ mProgress.showArrow(true);
+ float f2 = f1 / mTotalDragDistance;
+ if(f2 < 0.0F)
+ {
+ flag = false;
+ continue; /* Loop/switch isn't completed */
+ }
+ float f3 = Math.min(1.0F, Math.abs(f2));
+ float f4 = (5F * (float)Math.max((double)f3 - 0.40000000000000002D, 0.0D)) / 3F;
+ float f5 = Math.abs(f1) - mTotalDragDistance;
+ float f6;
+ float f7;
+ float f8;
+ float f9;
+ int k;
+ float f10;
+ float f11;
+ if(mUsingCustomStart)
+ f6 = mSpinnerFinalOffset - (float)mOriginalOffsetTop;
+ else
+ f6 = mSpinnerFinalOffset;
+ f7 = Math.max(0.0F, Math.min(f5, 2.0F * f6) / f6);
+ f8 = 2.0F * (float)((double)(f7 / 4F) - Math.pow(f7 / 4F, 2D));
+ f9 = 2.0F * (f6 * f8);
+ k = mOriginalOffsetTop + (int)(f9 + f6 * f3);
+ if(mCircleView.getVisibility() != 0)
+ mCircleView.setVisibility(0);
+ if(!mScale)
+ {
+ ViewCompat.setScaleX(mCircleView, 1.0F);
+ ViewCompat.setScaleY(mCircleView, 1.0F);
+ }
+ if(f1 >= mTotalDragDistance) goto _L10; else goto _L9
+_L9:
+ if(mScale)
+ setAnimationProgress(f1 / mTotalDragDistance);
+ if(mProgress.getAlpha() > 76 && !isAnimationRunning(mAlphaStartAnimation))
+ startProgressAlphaStartAnimation();
+ f11 = f4 * 0.8F;
+ mProgress.setStartEndTrim(0.0F, Math.min(0.8F, f11));
+ mProgress.setArrowScale(Math.min(1.0F, f4));
+_L11:
+ f10 = 0.5F * (-0.25F + 0.4F * f4 + 2.0F * f8);
+ mProgress.setProgressRotation(f10);
+ setTargetOffsetTopAndBottom(k - mCurrentTargetOffsetTop, true);
+ continue; /* Loop/switch isn't completed */
+_L10:
+ if(mProgress.getAlpha() < 255 && !isAnimationRunning(mAlphaMaxAnimation))
+ startProgressAlphaMaxAnimation();
+ if(true) goto _L11; else goto _L7
+_L7:
+ mActivePointerId = MotionEventCompat.getPointerId(motionevent, MotionEventCompat.getActionIndex(motionevent));
+ continue; /* Loop/switch isn't completed */
+_L8:
+ onSecondaryPointerUp(motionevent);
+ if(true) goto _L3; else goto _L5
+_L5:
+ if(mActivePointerId == -1)
+ {
+ if(i == 1)
+ Log.e(LOG_TAG, "Got ACTION_UP event but don't have an active pointer id.");
+ flag = false;
+ continue; /* Loop/switch isn't completed */
+ }
+ float f = 0.5F * (MotionEventCompat.getY(motionevent, MotionEventCompat.findPointerIndex(motionevent, mActivePointerId)) - mInitialMotionY);
+ mIsBeingDragged = false;
+ if(f <= mTotalDragDistance)
+ break; /* Loop/switch isn't completed */
+ setRefreshing(true, true);
+_L14:
+ mActivePointerId = -1;
+ flag = false;
+ if(true) goto _L13; else goto _L12
+_L12:
+ mRefreshing = false;
+ mProgress.setStartEndTrim(0.0F, 0.0F);
+ android.view.animation.Animation.AnimationListener animationlistener = null;
+ if(!mScale)
+ animationlistener = new android.view.animation.Animation.AnimationListener() {
+
+ public void onAnimationEnd(Animation animation)
+ {
+ if(!mScale)
+ startScaleDownAnimation(null);
+ }
+
+ public void onAnimationRepeat(Animation animation)
+ {
+ }
+
+ public void onAnimationStart(Animation animation)
+ {
+ }
+
+ final SwipeRefreshLayout this$0;
+
+
+ {
+ this$0 = SwipeRefreshLayout.this;
+ super();
+ }
+ }
+;
+ animateOffsetToStartPosition(mCurrentTargetOffsetTop, animationlistener);
+ mProgress.showArrow(false);
+ goto _L14
+ if(true) goto _L13; else goto _L15
+_L15:
+ }
+
+ public void requestDisallowInterceptTouchEvent(boolean flag)
+ {
+ }
+
+ public transient void setColorScheme(int ai[])
+ {
+ setColorSchemeResources(ai);
+ }
+
+ public transient void setColorSchemeColors(int ai[])
+ {
+ ensureTarget();
+ mProgress.setColorSchemeColors(ai);
+ }
+
+ public transient void setColorSchemeResources(int ai[])
+ {
+ Resources resources = getResources();
+ int ai1[] = new int[ai.length];
+ for(int i = 0; i < ai.length; i++)
+ ai1[i] = resources.getColor(ai[i]);
+
+ setColorSchemeColors(ai1);
+ }
+
+ public void setDistanceToTriggerSync(int i)
+ {
+ mTotalDragDistance = i;
+ }
+
+ public void setOnRefreshListener(OnRefreshListener onrefreshlistener)
+ {
+ mListener = onrefreshlistener;
+ }
+
+ public void setProgressBackgroundColor(int i)
+ {
+ setProgressBackgroundColorSchemeResource(i);
+ }
+
+ public void setProgressBackgroundColorSchemeColor(int i)
+ {
+ mCircleView.setBackgroundColor(i);
+ mProgress.setBackgroundColor(i);
+ }
+
+ public void setProgressBackgroundColorSchemeResource(int i)
+ {
+ setProgressBackgroundColorSchemeColor(getResources().getColor(i));
+ }
+
+ public void setProgressViewEndTarget(boolean flag, int i)
+ {
+ mSpinnerFinalOffset = i;
+ mScale = flag;
+ mCircleView.invalidate();
+ }
+
+ public void setProgressViewOffset(boolean flag, int i, int j)
+ {
+ mScale = flag;
+ mCircleView.setVisibility(8);
+ mCurrentTargetOffsetTop = i;
+ mOriginalOffsetTop = i;
+ mSpinnerFinalOffset = j;
+ mUsingCustomStart = true;
+ mCircleView.invalidate();
+ }
+
+ public void setRefreshing(boolean flag)
+ {
+ if(flag && mRefreshing != flag)
+ {
+ mRefreshing = flag;
+ int i;
+ if(!mUsingCustomStart)
+ i = (int)(mSpinnerFinalOffset + (float)mOriginalOffsetTop);
+ else
+ i = (int)mSpinnerFinalOffset;
+ setTargetOffsetTopAndBottom(i - mCurrentTargetOffsetTop, true);
+ mNotify = false;
+ startScaleUpAnimation(mRefreshListener);
+ } else
+ {
+ setRefreshing(flag, false);
+ }
+ }
+
+ public void setSize(int i)
+ {
+ if(i == 0 || i == 1)
+ {
+ DisplayMetrics displaymetrics = getResources().getDisplayMetrics();
+ if(i == 0)
+ {
+ int k = (int)(56F * displaymetrics.density);
+ mCircleWidth = k;
+ mCircleHeight = k;
+ } else
+ {
+ int j = (int)(40F * displaymetrics.density);
+ mCircleWidth = j;
+ mCircleHeight = j;
+ }
+ mCircleView.setImageDrawable(null);
+ mProgress.updateSizes(i);
+ mCircleView.setImageDrawable(mProgress);
+ }
+ }
+
+ private static final int ALPHA_ANIMATION_DURATION = 300;
+ private static final int ANIMATE_TO_START_DURATION = 200;
+ private static final int ANIMATE_TO_TRIGGER_DURATION = 200;
+ private static final int CIRCLE_BG_LIGHT = 0xfffafafa;
+ private static final int CIRCLE_DIAMETER = 40;
+ private static final int CIRCLE_DIAMETER_LARGE = 56;
+ private static final float DECELERATE_INTERPOLATION_FACTOR = 2F;
+ public static final int DEFAULT = 1;
+ private static final int DEFAULT_CIRCLE_TARGET = 64;
+ private static final float DRAG_RATE = 0.5F;
+ private static final int INVALID_POINTER = -1;
+ public static final int LARGE = 0;
+ private static final int LAYOUT_ATTRS[];
+ private static final String LOG_TAG = android/support/v4/widget/SwipeRefreshLayout.getSimpleName();
+ private static final int MAX_ALPHA = 255;
+ private static final float MAX_PROGRESS_ANGLE = 0.8F;
+ private static final int SCALE_DOWN_DURATION = 150;
+ private static final int STARTING_PROGRESS_ALPHA = 76;
+ private int mActivePointerId;
+ private Animation mAlphaMaxAnimation;
+ private Animation mAlphaStartAnimation;
+ private final Animation mAnimateToCorrectPosition;
+ private final Animation mAnimateToStartPosition;
+ private int mCircleHeight;
+ private CircleImageView mCircleView;
+ private int mCircleViewIndex;
+ private int mCircleWidth;
+ private int mCurrentTargetOffsetTop;
+ private final DecelerateInterpolator mDecelerateInterpolator;
+ protected int mFrom;
+ private float mInitialDownY;
+ private float mInitialMotionY;
+ private boolean mIsBeingDragged;
+ private OnRefreshListener mListener;
+ private int mMediumAnimationDuration;
+ private boolean mNotify;
+ private boolean mOriginalOffsetCalculated;
+ protected int mOriginalOffsetTop;
+ private MaterialProgressDrawable mProgress;
+ private android.view.animation.Animation.AnimationListener mRefreshListener = new android.view.animation.Animation.AnimationListener() {
+
+ public void onAnimationEnd(Animation animation)
+ {
+ if(mRefreshing)
+ {
+ mProgress.setAlpha(255);
+ mProgress.start();
+ if(mNotify && mListener != null)
+ mListener.onRefresh();
+ } else
+ {
+ mProgress.stop();
+ mCircleView.setVisibility(8);
+ setColorViewAlpha(255);
+ if(mScale)
+ setAnimationProgress(0.0F);
+ else
+ setTargetOffsetTopAndBottom(mOriginalOffsetTop - mCurrentTargetOffsetTop, true);
+ }
+ mCurrentTargetOffsetTop = mCircleView.getTop();
+ }
+
+ public void onAnimationRepeat(Animation animation)
+ {
+ }
+
+ public void onAnimationStart(Animation animation)
+ {
+ }
+
+ final SwipeRefreshLayout this$0;
+
+
+ {
+ this$0 = SwipeRefreshLayout.this;
+ super();
+ }
+ }
+;
+ private boolean mRefreshing;
+ private boolean mReturningToStart;
+ private boolean mScale;
+ private Animation mScaleAnimation;
+ private Animation mScaleDownAnimation;
+ private Animation mScaleDownToStartAnimation;
+ private float mSpinnerFinalOffset;
+ private float mStartingScale;
+ private View mTarget;
+ private float mTotalDragDistance;
+ private int mTouchSlop;
+ private boolean mUsingCustomStart;
+
+ static
+ {
+ int ai[] = new int[1];
+ ai[0] = 0x101000e;
+ LAYOUT_ATTRS = ai;
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/*
+ static int access$802(SwipeRefreshLayout swiperefreshlayout, int i)
+ {
+ swiperefreshlayout.mCurrentTargetOffsetTop = i;
+ return i;
+ }
+
+*/
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/ViewDragHelper.java b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/ViewDragHelper.java
new file mode 100644
index 0000000..739094d
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v4/widget/ViewDragHelper.java
@@ -0,0 +1,1135 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v4.widget;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.support.v4.view.*;
+import android.util.DisplayMetrics;
+import android.view.*;
+import android.view.animation.Interpolator;
+import java.util.Arrays;
+
+// Referenced classes of package android.support.v4.widget:
+// ScrollerCompat
+
+public class ViewDragHelper
+{
+ public static abstract class Callback
+ {
+
+ public int clampViewPositionHorizontal(View view, int i, int j)
+ {
+ return 0;
+ }
+
+ public int clampViewPositionVertical(View view, int i, int j)
+ {
+ return 0;
+ }
+
+ public int getOrderedChildIndex(int i)
+ {
+ return i;
+ }
+
+ public int getViewHorizontalDragRange(View view)
+ {
+ return 0;
+ }
+
+ public int getViewVerticalDragRange(View view)
+ {
+ return 0;
+ }
+
+ public void onEdgeDragStarted(int i, int j)
+ {
+ }
+
+ public boolean onEdgeLock(int i)
+ {
+ return false;
+ }
+
+ public void onEdgeTouched(int i, int j)
+ {
+ }
+
+ public void onViewCaptured(View view, int i)
+ {
+ }
+
+ public void onViewDragStateChanged(int i)
+ {
+ }
+
+ public void onViewPositionChanged(View view, int i, int j, int k, int l)
+ {
+ }
+
+ public void onViewReleased(View view, float f, float f1)
+ {
+ }
+
+ public abstract boolean tryCaptureView(View view, int i);
+
+ public Callback()
+ {
+ }
+ }
+
+
+ private ViewDragHelper(Context context, ViewGroup viewgroup, Callback callback)
+ {
+ mActivePointerId = -1;
+ if(viewgroup == null)
+ throw new IllegalArgumentException("Parent view may not be null");
+ if(callback == null)
+ {
+ throw new IllegalArgumentException("Callback may not be null");
+ } else
+ {
+ mParentView = viewgroup;
+ mCallback = callback;
+ ViewConfiguration viewconfiguration = ViewConfiguration.get(context);
+ mEdgeSize = (int)(0.5F + 20F * context.getResources().getDisplayMetrics().density);
+ mTouchSlop = viewconfiguration.getScaledTouchSlop();
+ mMaxVelocity = viewconfiguration.getScaledMaximumFlingVelocity();
+ mMinVelocity = viewconfiguration.getScaledMinimumFlingVelocity();
+ mScroller = ScrollerCompat.create(context, sInterpolator);
+ return;
+ }
+ }
+
+ private boolean checkNewEdgeDrag(float f, float f1, int i, int j)
+ {
+ boolean flag;
+ float f2;
+ float f3;
+ flag = false;
+ f2 = Math.abs(f);
+ f3 = Math.abs(f1);
+ if((j & mInitialEdgesTouched[i]) == j && (j & mTrackingEdges) != 0 && (j & mEdgeDragsLocked[i]) != j && (j & mEdgeDragsInProgress[i]) != j && (f2 > (float)mTouchSlop || f3 > (float)mTouchSlop)) goto _L2; else goto _L1
+_L1:
+ return flag;
+_L2:
+ if(f2 < 0.5F * f3 && mCallback.onEdgeLock(j))
+ {
+ int ai[] = mEdgeDragsLocked;
+ ai[i] = j | ai[i];
+ } else
+ if((j & mEdgeDragsInProgress[i]) == 0 && f2 > (float)mTouchSlop)
+ flag = true;
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ private boolean checkTouchSlop(View view, float f, float f1)
+ {
+ boolean flag = true;
+ if(view != null) goto _L2; else goto _L1
+_L1:
+ flag = false;
+_L4:
+ return flag;
+_L2:
+ boolean flag1;
+ boolean flag2;
+ if(mCallback.getViewHorizontalDragRange(view) > 0)
+ flag1 = flag;
+ else
+ flag1 = false;
+ if(mCallback.getViewVerticalDragRange(view) > 0)
+ flag2 = flag;
+ else
+ flag2 = false;
+ if(flag1 && flag2)
+ {
+ if(f * f + f1 * f1 <= (float)(mTouchSlop * mTouchSlop))
+ flag = false;
+ } else
+ if(flag1)
+ {
+ if(Math.abs(f) <= (float)mTouchSlop)
+ flag = false;
+ } else
+ if(flag2)
+ {
+ if(Math.abs(f1) <= (float)mTouchSlop)
+ flag = false;
+ } else
+ {
+ flag = false;
+ }
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ private float clampMag(float f, float f1, float f2)
+ {
+ float f3 = Math.abs(f);
+ if(f3 >= f1) goto _L2; else goto _L1
+_L1:
+ f2 = 0.0F;
+_L4:
+ return f2;
+_L2:
+ if(f3 > f2)
+ {
+ if(f <= 0.0F)
+ f2 = -f2;
+ } else
+ {
+ f2 = f;
+ }
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ private int clampMag(int i, int j, int k)
+ {
+ int l = Math.abs(i);
+ if(l >= j) goto _L2; else goto _L1
+_L1:
+ k = 0;
+_L4:
+ return k;
+_L2:
+ if(l > k)
+ {
+ if(i <= 0)
+ k = -k;
+ } else
+ {
+ k = i;
+ }
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ private void clearMotionHistory()
+ {
+ if(mInitialMotionX != null)
+ {
+ Arrays.fill(mInitialMotionX, 0.0F);
+ Arrays.fill(mInitialMotionY, 0.0F);
+ Arrays.fill(mLastMotionX, 0.0F);
+ Arrays.fill(mLastMotionY, 0.0F);
+ Arrays.fill(mInitialEdgesTouched, 0);
+ Arrays.fill(mEdgeDragsInProgress, 0);
+ Arrays.fill(mEdgeDragsLocked, 0);
+ mPointersDown = 0;
+ }
+ }
+
+ private void clearMotionHistory(int i)
+ {
+ if(mInitialMotionX != null)
+ {
+ mInitialMotionX[i] = 0.0F;
+ mInitialMotionY[i] = 0.0F;
+ mLastMotionX[i] = 0.0F;
+ mLastMotionY[i] = 0.0F;
+ mInitialEdgesTouched[i] = 0;
+ mEdgeDragsInProgress[i] = 0;
+ mEdgeDragsLocked[i] = 0;
+ mPointersDown = mPointersDown & (-1 ^ 1 << i);
+ }
+ }
+
+ private int computeAxisDuration(int i, int j, int k)
+ {
+ int l1;
+ if(i == 0)
+ {
+ l1 = 0;
+ } else
+ {
+ int l = mParentView.getWidth();
+ int i1 = l / 2;
+ float f = Math.min(1.0F, (float)Math.abs(i) / (float)l);
+ float f1 = (float)i1 + (float)i1 * distanceInfluenceForSnapDuration(f);
+ int j1 = Math.abs(j);
+ int k1;
+ if(j1 > 0)
+ k1 = 4 * Math.round(1000F * Math.abs(f1 / (float)j1));
+ else
+ k1 = (int)(256F * (1.0F + (float)Math.abs(i) / (float)k));
+ l1 = Math.min(k1, 600);
+ }
+ return l1;
+ }
+
+ private int computeSettleDuration(View view, int i, int j, int k, int l)
+ {
+ int i1 = clampMag(k, (int)mMinVelocity, (int)mMaxVelocity);
+ int j1 = clampMag(l, (int)mMinVelocity, (int)mMaxVelocity);
+ int k1 = Math.abs(i);
+ int l1 = Math.abs(j);
+ int i2 = Math.abs(i1);
+ int j2 = Math.abs(j1);
+ int k2 = i2 + j2;
+ int l2 = k1 + l1;
+ float f;
+ float f1;
+ int i3;
+ int j3;
+ if(i1 != 0)
+ f = (float)i2 / (float)k2;
+ else
+ f = (float)k1 / (float)l2;
+ if(j1 != 0)
+ f1 = (float)j2 / (float)k2;
+ else
+ f1 = (float)l1 / (float)l2;
+ i3 = computeAxisDuration(i, i1, mCallback.getViewHorizontalDragRange(view));
+ j3 = computeAxisDuration(j, j1, mCallback.getViewVerticalDragRange(view));
+ return (int)(f * (float)i3 + f1 * (float)j3);
+ }
+
+ public static ViewDragHelper create(ViewGroup viewgroup, float f, Callback callback)
+ {
+ ViewDragHelper viewdraghelper = create(viewgroup, callback);
+ viewdraghelper.mTouchSlop = (int)((float)viewdraghelper.mTouchSlop * (1.0F / f));
+ return viewdraghelper;
+ }
+
+ public static ViewDragHelper create(ViewGroup viewgroup, Callback callback)
+ {
+ return new ViewDragHelper(viewgroup.getContext(), viewgroup, callback);
+ }
+
+ private void dispatchViewReleased(float f, float f1)
+ {
+ mReleaseInProgress = true;
+ mCallback.onViewReleased(mCapturedView, f, f1);
+ mReleaseInProgress = false;
+ if(mDragState == 1)
+ setDragState(0);
+ }
+
+ private float distanceInfluenceForSnapDuration(float f)
+ {
+ return (float)Math.sin((float)(0.4712389167638204D * (double)(f - 0.5F)));
+ }
+
+ private void dragTo(int i, int j, int k, int l)
+ {
+ int i1 = i;
+ int j1 = j;
+ int k1 = mCapturedView.getLeft();
+ int l1 = mCapturedView.getTop();
+ if(k != 0)
+ {
+ i1 = mCallback.clampViewPositionHorizontal(mCapturedView, i, k);
+ mCapturedView.offsetLeftAndRight(i1 - k1);
+ }
+ if(l != 0)
+ {
+ j1 = mCallback.clampViewPositionVertical(mCapturedView, j, l);
+ mCapturedView.offsetTopAndBottom(j1 - l1);
+ }
+ if(k != 0 || l != 0)
+ {
+ int i2 = i1 - k1;
+ int j2 = j1 - l1;
+ mCallback.onViewPositionChanged(mCapturedView, i1, j1, i2, j2);
+ }
+ }
+
+ private void ensureMotionHistorySizeForId(int i)
+ {
+ if(mInitialMotionX == null || mInitialMotionX.length <= i)
+ {
+ float af[] = new float[i + 1];
+ float af1[] = new float[i + 1];
+ float af2[] = new float[i + 1];
+ float af3[] = new float[i + 1];
+ int ai[] = new int[i + 1];
+ int ai1[] = new int[i + 1];
+ int ai2[] = new int[i + 1];
+ if(mInitialMotionX != null)
+ {
+ System.arraycopy(mInitialMotionX, 0, af, 0, mInitialMotionX.length);
+ System.arraycopy(mInitialMotionY, 0, af1, 0, mInitialMotionY.length);
+ System.arraycopy(mLastMotionX, 0, af2, 0, mLastMotionX.length);
+ System.arraycopy(mLastMotionY, 0, af3, 0, mLastMotionY.length);
+ System.arraycopy(mInitialEdgesTouched, 0, ai, 0, mInitialEdgesTouched.length);
+ System.arraycopy(mEdgeDragsInProgress, 0, ai1, 0, mEdgeDragsInProgress.length);
+ System.arraycopy(mEdgeDragsLocked, 0, ai2, 0, mEdgeDragsLocked.length);
+ }
+ mInitialMotionX = af;
+ mInitialMotionY = af1;
+ mLastMotionX = af2;
+ mLastMotionY = af3;
+ mInitialEdgesTouched = ai;
+ mEdgeDragsInProgress = ai1;
+ mEdgeDragsLocked = ai2;
+ }
+ }
+
+ private boolean forceSettleCapturedViewAt(int i, int j, int k, int l)
+ {
+ boolean flag = false;
+ int i1 = mCapturedView.getLeft();
+ int j1 = mCapturedView.getTop();
+ int k1 = i - i1;
+ int l1 = j - j1;
+ if(k1 == 0 && l1 == 0)
+ {
+ mScroller.abortAnimation();
+ setDragState(0);
+ } else
+ {
+ int i2 = computeSettleDuration(mCapturedView, k1, l1, k, l);
+ mScroller.startScroll(i1, j1, k1, l1, i2);
+ setDragState(2);
+ flag = true;
+ }
+ return flag;
+ }
+
+ private int getEdgesTouched(int i, int j)
+ {
+ int k = 0;
+ if(i < mParentView.getLeft() + mEdgeSize)
+ k = false | true;
+ if(j < mParentView.getTop() + mEdgeSize)
+ k |= 4;
+ if(i > mParentView.getRight() - mEdgeSize)
+ k |= 2;
+ if(j > mParentView.getBottom() - mEdgeSize)
+ k |= 8;
+ return k;
+ }
+
+ private void releaseViewForPointerUp()
+ {
+ mVelocityTracker.computeCurrentVelocity(1000, mMaxVelocity);
+ dispatchViewReleased(clampMag(VelocityTrackerCompat.getXVelocity(mVelocityTracker, mActivePointerId), mMinVelocity, mMaxVelocity), clampMag(VelocityTrackerCompat.getYVelocity(mVelocityTracker, mActivePointerId), mMinVelocity, mMaxVelocity));
+ }
+
+ private void reportNewEdgeDrags(float f, float f1, int i)
+ {
+ int j = 0;
+ if(checkNewEdgeDrag(f, f1, i, 1))
+ j = false | true;
+ if(checkNewEdgeDrag(f1, f, i, 4))
+ j |= 4;
+ if(checkNewEdgeDrag(f, f1, i, 2))
+ j |= 2;
+ if(checkNewEdgeDrag(f1, f, i, 8))
+ j |= 8;
+ if(j != 0)
+ {
+ int ai[] = mEdgeDragsInProgress;
+ ai[i] = j | ai[i];
+ mCallback.onEdgeDragStarted(j, i);
+ }
+ }
+
+ private void saveInitialMotion(float f, float f1, int i)
+ {
+ ensureMotionHistorySizeForId(i);
+ float af[] = mInitialMotionX;
+ mLastMotionX[i] = f;
+ af[i] = f;
+ float af1[] = mInitialMotionY;
+ mLastMotionY[i] = f1;
+ af1[i] = f1;
+ mInitialEdgesTouched[i] = getEdgesTouched((int)f, (int)f1);
+ mPointersDown = mPointersDown | 1 << i;
+ }
+
+ private void saveLastMotion(MotionEvent motionevent)
+ {
+ int i = MotionEventCompat.getPointerCount(motionevent);
+ for(int j = 0; j < i; j++)
+ {
+ int k = MotionEventCompat.getPointerId(motionevent, j);
+ float f = MotionEventCompat.getX(motionevent, j);
+ float f1 = MotionEventCompat.getY(motionevent, j);
+ mLastMotionX[k] = f;
+ mLastMotionY[k] = f1;
+ }
+
+ }
+
+ public void abort()
+ {
+ cancel();
+ if(mDragState == 2)
+ {
+ int i = mScroller.getCurrX();
+ int j = mScroller.getCurrY();
+ mScroller.abortAnimation();
+ int k = mScroller.getCurrX();
+ int l = mScroller.getCurrY();
+ mCallback.onViewPositionChanged(mCapturedView, k, l, k - i, l - j);
+ }
+ setDragState(0);
+ }
+
+ protected boolean canScroll(View view, boolean flag, int i, int j, int k, int l)
+ {
+ ViewGroup viewgroup;
+ int i1;
+ int j1;
+ int k1;
+ if(!(view instanceof ViewGroup))
+ break MISSING_BLOCK_LABEL_148;
+ viewgroup = (ViewGroup)view;
+ i1 = view.getScrollX();
+ j1 = view.getScrollY();
+ k1 = -1 + viewgroup.getChildCount();
+_L3:
+ View view1;
+ if(k1 < 0)
+ break MISSING_BLOCK_LABEL_148;
+ view1 = viewgroup.getChildAt(k1);
+ if(k + i1 < view1.getLeft() || k + i1 >= view1.getRight() || l + j1 < view1.getTop() || l + j1 >= view1.getBottom() || !canScroll(view1, true, i, j, (k + i1) - view1.getLeft(), (l + j1) - view1.getTop())) goto _L2; else goto _L1
+_L1:
+ boolean flag1 = true;
+_L4:
+ return flag1;
+_L2:
+ k1--;
+ goto _L3
+ if(flag && (ViewCompat.canScrollHorizontally(view, -i) || ViewCompat.canScrollVertically(view, -j)))
+ flag1 = true;
+ else
+ flag1 = false;
+ goto _L4
+ }
+
+ public void cancel()
+ {
+ mActivePointerId = -1;
+ clearMotionHistory();
+ if(mVelocityTracker != null)
+ {
+ mVelocityTracker.recycle();
+ mVelocityTracker = null;
+ }
+ }
+
+ public void captureChildView(View view, int i)
+ {
+ if(view.getParent() != mParentView)
+ {
+ throw new IllegalArgumentException((new StringBuilder()).append("captureChildView: parameter must be a descendant of the ViewDragHelper's tracked parent view (").append(mParentView).append(")").toString());
+ } else
+ {
+ mCapturedView = view;
+ mActivePointerId = i;
+ mCallback.onViewCaptured(view, i);
+ setDragState(1);
+ return;
+ }
+ }
+
+ public boolean checkTouchSlop(int i)
+ {
+ int j;
+ int k;
+ j = mInitialMotionX.length;
+ k = 0;
+_L3:
+ if(k >= j)
+ break MISSING_BLOCK_LABEL_34;
+ if(!checkTouchSlop(i, k)) goto _L2; else goto _L1
+_L1:
+ boolean flag = true;
+_L4:
+ return flag;
+_L2:
+ k++;
+ goto _L3
+ flag = false;
+ goto _L4
+ }
+
+ public boolean checkTouchSlop(int i, int j)
+ {
+ boolean flag = true;
+ if(isPointerDown(j)) goto _L2; else goto _L1
+_L1:
+ flag = false;
+_L4:
+ return flag;
+_L2:
+ int k;
+ int l;
+ float f;
+ float f1;
+ if((i & 1) == flag)
+ k = ((flag) ? 1 : 0);
+ else
+ k = 0;
+ if((i & 2) == 2)
+ l = ((flag) ? 1 : 0);
+ else
+ l = 0;
+ f = mLastMotionX[j] - mInitialMotionX[j];
+ f1 = mLastMotionY[j] - mInitialMotionY[j];
+ if(k != 0 && l != 0)
+ {
+ if(f * f + f1 * f1 <= (float)(mTouchSlop * mTouchSlop))
+ flag = false;
+ } else
+ if(k != 0)
+ {
+ if(Math.abs(f) <= (float)mTouchSlop)
+ flag = false;
+ } else
+ if(l != 0)
+ {
+ if(Math.abs(f1) <= (float)mTouchSlop)
+ flag = false;
+ } else
+ {
+ flag = false;
+ }
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ public boolean continueSettling(boolean flag)
+ {
+ boolean flag1;
+ if(mDragState == 2)
+ {
+ boolean flag2 = mScroller.computeScrollOffset();
+ int i = mScroller.getCurrX();
+ int j = mScroller.getCurrY();
+ int k = i - mCapturedView.getLeft();
+ int l = j - mCapturedView.getTop();
+ if(k != 0)
+ mCapturedView.offsetLeftAndRight(k);
+ if(l != 0)
+ mCapturedView.offsetTopAndBottom(l);
+ if(k != 0 || l != 0)
+ mCallback.onViewPositionChanged(mCapturedView, i, j, k, l);
+ if(flag2 && i == mScroller.getFinalX() && j == mScroller.getFinalY())
+ {
+ mScroller.abortAnimation();
+ flag2 = false;
+ }
+ if(!flag2)
+ if(flag)
+ mParentView.post(mSetIdleRunnable);
+ else
+ setDragState(0);
+ }
+ if(mDragState == 2)
+ flag1 = true;
+ else
+ flag1 = false;
+ return flag1;
+ }
+
+ public View findTopChildUnder(int i, int j)
+ {
+ int k = -1 + mParentView.getChildCount();
+_L3:
+ View view;
+ if(k < 0)
+ break MISSING_BLOCK_LABEL_77;
+ view = mParentView.getChildAt(mCallback.getOrderedChildIndex(k));
+ if(i < view.getLeft() || i >= view.getRight() || j < view.getTop() || j >= view.getBottom()) goto _L2; else goto _L1
+_L1:
+ return view;
+_L2:
+ k--;
+ goto _L3
+ view = null;
+ goto _L1
+ }
+
+ public void flingCapturedView(int i, int j, int k, int l)
+ {
+ if(!mReleaseInProgress)
+ {
+ throw new IllegalStateException("Cannot flingCapturedView outside of a call to Callback#onViewReleased");
+ } else
+ {
+ mScroller.fling(mCapturedView.getLeft(), mCapturedView.getTop(), (int)VelocityTrackerCompat.getXVelocity(mVelocityTracker, mActivePointerId), (int)VelocityTrackerCompat.getYVelocity(mVelocityTracker, mActivePointerId), i, k, j, l);
+ setDragState(2);
+ return;
+ }
+ }
+
+ public int getActivePointerId()
+ {
+ return mActivePointerId;
+ }
+
+ public View getCapturedView()
+ {
+ return mCapturedView;
+ }
+
+ public int getEdgeSize()
+ {
+ return mEdgeSize;
+ }
+
+ public float getMinVelocity()
+ {
+ return mMinVelocity;
+ }
+
+ public int getTouchSlop()
+ {
+ return mTouchSlop;
+ }
+
+ public int getViewDragState()
+ {
+ return mDragState;
+ }
+
+ public boolean isCapturedViewUnder(int i, int j)
+ {
+ return isViewUnder(mCapturedView, i, j);
+ }
+
+ public boolean isEdgeTouched(int i)
+ {
+ int j;
+ int k;
+ j = mInitialEdgesTouched.length;
+ k = 0;
+_L3:
+ if(k >= j)
+ break MISSING_BLOCK_LABEL_34;
+ if(!isEdgeTouched(i, k)) goto _L2; else goto _L1
+_L1:
+ boolean flag = true;
+_L4:
+ return flag;
+_L2:
+ k++;
+ goto _L3
+ flag = false;
+ goto _L4
+ }
+
+ public boolean isEdgeTouched(int i, int j)
+ {
+ boolean flag;
+ if(isPointerDown(j) && (i & mInitialEdgesTouched[j]) != 0)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ public boolean isPointerDown(int i)
+ {
+ boolean flag = true;
+ if((mPointersDown & flag << i) == 0)
+ flag = false;
+ return flag;
+ }
+
+ public boolean isViewUnder(View view, int i, int j)
+ {
+ boolean flag;
+ flag = false;
+ break MISSING_BLOCK_LABEL_3;
+ if(view != null && i >= view.getLeft() && i < view.getRight() && j >= view.getTop() && j < view.getBottom())
+ flag = true;
+ return flag;
+ }
+
+ public void processTouchEvent(MotionEvent motionevent)
+ {
+ int i;
+ int j;
+ i = MotionEventCompat.getActionMasked(motionevent);
+ j = MotionEventCompat.getActionIndex(motionevent);
+ if(i == 0)
+ cancel();
+ if(mVelocityTracker == null)
+ mVelocityTracker = VelocityTracker.obtain();
+ mVelocityTracker.addMovement(motionevent);
+ i;
+ JVM INSTR tableswitch 0 6: default 84
+ // 0 85
+ // 1 664
+ // 2 293
+ // 3 683
+ // 4 84
+ // 5 173
+ // 6 525;
+ goto _L1 _L2 _L3 _L4 _L5 _L1 _L6 _L7
+_L1:
+ return;
+_L2:
+ float f10 = motionevent.getX();
+ float f11 = motionevent.getY();
+ int l3 = MotionEventCompat.getPointerId(motionevent, 0);
+ View view1 = findTopChildUnder((int)f10, (int)f11);
+ saveInitialMotion(f10, f11, l3);
+ tryCaptureViewForDrag(view1, l3);
+ int i4 = mInitialEdgesTouched[l3];
+ if((i4 & mTrackingEdges) != 0)
+ mCallback.onEdgeTouched(i4 & mTrackingEdges, l3);
+ continue; /* Loop/switch isn't completed */
+_L6:
+ int j3 = MotionEventCompat.getPointerId(motionevent, j);
+ float f8 = MotionEventCompat.getX(motionevent, j);
+ float f9 = MotionEventCompat.getY(motionevent, j);
+ saveInitialMotion(f8, f9, j3);
+ if(mDragState == 0)
+ {
+ tryCaptureViewForDrag(findTopChildUnder((int)f8, (int)f9), j3);
+ int k3 = mInitialEdgesTouched[j3];
+ if((k3 & mTrackingEdges) != 0)
+ mCallback.onEdgeTouched(k3 & mTrackingEdges, j3);
+ } else
+ if(isCapturedViewUnder((int)f8, (int)f9))
+ tryCaptureViewForDrag(mCapturedView, j3);
+ continue; /* Loop/switch isn't completed */
+_L4:
+ int l1;
+ int i2;
+ if(mDragState == 1)
+ {
+ int k2 = MotionEventCompat.findPointerIndex(motionevent, mActivePointerId);
+ float f6 = MotionEventCompat.getX(motionevent, k2);
+ float f7 = MotionEventCompat.getY(motionevent, k2);
+ int l2 = (int)(f6 - mLastMotionX[mActivePointerId]);
+ int i3 = (int)(f7 - mLastMotionY[mActivePointerId]);
+ dragTo(l2 + mCapturedView.getLeft(), i3 + mCapturedView.getTop(), l2, i3);
+ saveLastMotion(motionevent);
+ continue; /* Loop/switch isn't completed */
+ }
+ l1 = MotionEventCompat.getPointerCount(motionevent);
+ i2 = 0;
+_L12:
+ if(i2 >= l1) goto _L9; else goto _L8
+_L8:
+ int j2;
+ float f2;
+ float f3;
+ float f4;
+ float f5;
+ j2 = MotionEventCompat.getPointerId(motionevent, i2);
+ f2 = MotionEventCompat.getX(motionevent, i2);
+ f3 = MotionEventCompat.getY(motionevent, i2);
+ f4 = f2 - mInitialMotionX[j2];
+ f5 = f3 - mInitialMotionY[j2];
+ reportNewEdgeDrags(f4, f5, j2);
+ if(mDragState != 1) goto _L10; else goto _L9
+_L9:
+ View view;
+ saveLastMotion(motionevent);
+ continue; /* Loop/switch isn't completed */
+_L10:
+ if(checkTouchSlop(view = findTopChildUnder((int)f2, (int)f3), f4, f5) && tryCaptureViewForDrag(view, j2)) goto _L9; else goto _L11
+_L11:
+ i2++;
+ if(true) goto _L12; else goto _L7
+_L7:
+ int k;
+ int l;
+ int i1;
+ int j1;
+ k = MotionEventCompat.getPointerId(motionevent, j);
+ if(mDragState != 1 || k != mActivePointerId)
+ break MISSING_BLOCK_LABEL_655;
+ l = -1;
+ i1 = MotionEventCompat.getPointerCount(motionevent);
+ j1 = 0;
+_L14:
+ int k1;
+ if(j1 >= i1)
+ break MISSING_BLOCK_LABEL_644;
+ k1 = MotionEventCompat.getPointerId(motionevent, j1);
+ if(k1 != mActivePointerId)
+ break; /* Loop/switch isn't completed */
+_L16:
+ j1++;
+ if(true) goto _L14; else goto _L13
+_L13:
+ float f;
+ float f1;
+ f = MotionEventCompat.getX(motionevent, j1);
+ f1 = MotionEventCompat.getY(motionevent, j1);
+ if(findTopChildUnder((int)f, (int)f1) != mCapturedView || !tryCaptureViewForDrag(mCapturedView, k1)) goto _L16; else goto _L15
+_L15:
+ l = mActivePointerId;
+ if(l == -1)
+ releaseViewForPointerUp();
+ clearMotionHistory(k);
+ continue; /* Loop/switch isn't completed */
+_L3:
+ if(mDragState == 1)
+ releaseViewForPointerUp();
+ cancel();
+ continue; /* Loop/switch isn't completed */
+_L5:
+ if(mDragState == 1)
+ dispatchViewReleased(0.0F, 0.0F);
+ cancel();
+ if(true) goto _L1; else goto _L17
+_L17:
+ }
+
+ void setDragState(int i)
+ {
+ mParentView.removeCallbacks(mSetIdleRunnable);
+ if(mDragState != i)
+ {
+ mDragState = i;
+ mCallback.onViewDragStateChanged(i);
+ if(mDragState == 0)
+ mCapturedView = null;
+ }
+ }
+
+ public void setEdgeTrackingEnabled(int i)
+ {
+ mTrackingEdges = i;
+ }
+
+ public void setMinVelocity(float f)
+ {
+ mMinVelocity = f;
+ }
+
+ public boolean settleCapturedViewAt(int i, int j)
+ {
+ if(!mReleaseInProgress)
+ throw new IllegalStateException("Cannot settleCapturedViewAt outside of a call to Callback#onViewReleased");
+ else
+ return forceSettleCapturedViewAt(i, j, (int)VelocityTrackerCompat.getXVelocity(mVelocityTracker, mActivePointerId), (int)VelocityTrackerCompat.getYVelocity(mVelocityTracker, mActivePointerId));
+ }
+
+ public boolean shouldInterceptTouchEvent(MotionEvent motionevent)
+ {
+ int i;
+ int j;
+ i = MotionEventCompat.getActionMasked(motionevent);
+ j = MotionEventCompat.getActionIndex(motionevent);
+ if(i == 0)
+ cancel();
+ if(mVelocityTracker == null)
+ mVelocityTracker = VelocityTracker.obtain();
+ mVelocityTracker.addMovement(motionevent);
+ i;
+ JVM INSTR tableswitch 0 6: default 84
+ // 0 98
+ // 1 606
+ // 2 320
+ // 3 606
+ // 4 84
+ // 5 203
+ // 6 594;
+ goto _L1 _L2 _L3 _L4 _L3 _L1 _L5 _L6
+_L1:
+ break; /* Loop/switch isn't completed */
+_L3:
+ break MISSING_BLOCK_LABEL_606;
+_L7:
+ boolean flag;
+ int k;
+ int l;
+ int i1;
+ float f;
+ float f1;
+ float f2;
+ float f3;
+ View view;
+ boolean flag1;
+ int j1;
+ int k1;
+ int l1;
+ int i2;
+ int j2;
+ int k2;
+ int l2;
+ int i3;
+ int j3;
+ float f4;
+ float f5;
+ View view1;
+ int k3;
+ float f6;
+ float f7;
+ int l3;
+ View view2;
+ int i4;
+ if(mDragState == 1)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+_L2:
+ f6 = motionevent.getX();
+ f7 = motionevent.getY();
+ l3 = MotionEventCompat.getPointerId(motionevent, 0);
+ saveInitialMotion(f6, f7, l3);
+ view2 = findTopChildUnder((int)f6, (int)f7);
+ if(view2 == mCapturedView && mDragState == 2)
+ tryCaptureViewForDrag(view2, l3);
+ i4 = mInitialEdgesTouched[l3];
+ if((i4 & mTrackingEdges) != 0)
+ mCallback.onEdgeTouched(i4 & mTrackingEdges, l3);
+ goto _L7
+_L5:
+ j3 = MotionEventCompat.getPointerId(motionevent, j);
+ f4 = MotionEventCompat.getX(motionevent, j);
+ f5 = MotionEventCompat.getY(motionevent, j);
+ saveInitialMotion(f4, f5, j3);
+ if(mDragState == 0)
+ {
+ k3 = mInitialEdgesTouched[j3];
+ if((k3 & mTrackingEdges) != 0)
+ mCallback.onEdgeTouched(k3 & mTrackingEdges, j3);
+ } else
+ if(mDragState == 2)
+ {
+ view1 = findTopChildUnder((int)f4, (int)f5);
+ if(view1 == mCapturedView)
+ tryCaptureViewForDrag(view1, j3);
+ }
+ goto _L7
+_L4:
+ k = MotionEventCompat.getPointerCount(motionevent);
+ l = 0;
+_L13:
+ if(l >= k) goto _L9; else goto _L8
+_L8:
+ i1 = MotionEventCompat.getPointerId(motionevent, l);
+ f = MotionEventCompat.getX(motionevent, l);
+ f1 = MotionEventCompat.getY(motionevent, l);
+ f2 = f - mInitialMotionX[i1];
+ f3 = f1 - mInitialMotionY[i1];
+ view = findTopChildUnder((int)f, (int)f1);
+ if(view != null && checkTouchSlop(view, f2, f3))
+ flag1 = true;
+ else
+ flag1 = false;
+ if(!flag1) goto _L11; else goto _L10
+_L10:
+ j1 = view.getLeft();
+ k1 = j1 + (int)f2;
+ l1 = mCallback.clampViewPositionHorizontal(view, k1, (int)f2);
+ i2 = view.getTop();
+ j2 = i2 + (int)f3;
+ k2 = mCallback.clampViewPositionVertical(view, j2, (int)f3);
+ l2 = mCallback.getViewHorizontalDragRange(view);
+ i3 = mCallback.getViewVerticalDragRange(view);
+ if(l2 != 0 && (l2 <= 0 || l1 != j1) || i3 != 0 && (i3 <= 0 || k2 != i2)) goto _L11; else goto _L9
+_L9:
+ saveLastMotion(motionevent);
+ goto _L7
+_L11:
+ reportNewEdgeDrags(f2, f3, i1);
+ if(mDragState == 1 || flag1 && tryCaptureViewForDrag(view, i1)) goto _L9; else goto _L12
+_L12:
+ l++;
+ goto _L13
+_L6:
+ clearMotionHistory(MotionEventCompat.getPointerId(motionevent, j));
+ goto _L7
+ cancel();
+ goto _L7
+ }
+
+ public boolean smoothSlideViewTo(View view, int i, int j)
+ {
+ mCapturedView = view;
+ mActivePointerId = -1;
+ boolean flag = forceSettleCapturedViewAt(i, j, 0, 0);
+ if(!flag && mDragState == 0 && mCapturedView != null)
+ mCapturedView = null;
+ return flag;
+ }
+
+ boolean tryCaptureViewForDrag(View view, int i)
+ {
+ boolean flag = true;
+ if(view != mCapturedView || mActivePointerId != i)
+ if(view != null && mCallback.tryCaptureView(view, i))
+ {
+ mActivePointerId = i;
+ captureChildView(view, i);
+ } else
+ {
+ flag = false;
+ }
+ return flag;
+ }
+
+ private static final int BASE_SETTLE_DURATION = 256;
+ public static final int DIRECTION_ALL = 3;
+ public static final int DIRECTION_HORIZONTAL = 1;
+ public static final int DIRECTION_VERTICAL = 2;
+ public static final int EDGE_ALL = 15;
+ public static final int EDGE_BOTTOM = 8;
+ public static final int EDGE_LEFT = 1;
+ public static final int EDGE_RIGHT = 2;
+ private static final int EDGE_SIZE = 20;
+ public static final int EDGE_TOP = 4;
+ public static final int INVALID_POINTER = -1;
+ private static final int MAX_SETTLE_DURATION = 600;
+ public static final int STATE_DRAGGING = 1;
+ public static final int STATE_IDLE = 0;
+ public static final int STATE_SETTLING = 2;
+ private static final String TAG = "ViewDragHelper";
+ private static final Interpolator sInterpolator = new Interpolator() {
+
+ public float getInterpolation(float f)
+ {
+ float f1 = f - 1.0F;
+ return 1.0F + f1 * (f1 * (f1 * (f1 * f1)));
+ }
+
+ }
+;
+ private int mActivePointerId;
+ private final Callback mCallback;
+ private View mCapturedView;
+ private int mDragState;
+ private int mEdgeDragsInProgress[];
+ private int mEdgeDragsLocked[];
+ private int mEdgeSize;
+ private int mInitialEdgesTouched[];
+ private float mInitialMotionX[];
+ private float mInitialMotionY[];
+ private float mLastMotionX[];
+ private float mLastMotionY[];
+ private float mMaxVelocity;
+ private float mMinVelocity;
+ private final ViewGroup mParentView;
+ private int mPointersDown;
+ private boolean mReleaseInProgress;
+ private ScrollerCompat mScroller;
+ private final Runnable mSetIdleRunnable = new Runnable() {
+
+ public void run()
+ {
+ setDragState(0);
+ }
+
+ final ViewDragHelper this$0;
+
+
+ {
+ this$0 = ViewDragHelper.this;
+ super();
+ }
+ }
+;
+ private int mTouchSlop;
+ private int mTrackingEdges;
+ private VelocityTracker mVelocityTracker;
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v7/app/MediaRouteActionProvider.java b/1_6.h12_dev/sonos.jad/src/android/support/v7/app/MediaRouteActionProvider.java
new file mode 100644
index 0000000..aee885d
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v7/app/MediaRouteActionProvider.java
@@ -0,0 +1,172 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v7.app;
+
+import android.content.Context;
+import android.support.v4.view.ActionProvider;
+import android.support.v7.media.MediaRouteSelector;
+import android.support.v7.media.MediaRouter;
+import android.util.Log;
+import android.view.View;
+import java.lang.ref.WeakReference;
+
+// Referenced classes of package android.support.v7.app:
+// MediaRouteDialogFactory, MediaRouteButton
+
+public class MediaRouteActionProvider extends ActionProvider
+{
+ private static final class MediaRouterCallback extends android.support.v7.media.MediaRouter.Callback
+ {
+
+ private void refreshRoute(MediaRouter mediarouter)
+ {
+ MediaRouteActionProvider mediarouteactionprovider = (MediaRouteActionProvider)mProviderWeak.get();
+ if(mediarouteactionprovider != null)
+ mediarouteactionprovider.refreshRoute();
+ else
+ mediarouter.removeCallback(this);
+ }
+
+ public void onProviderAdded(MediaRouter mediarouter, android.support.v7.media.MediaRouter.ProviderInfo providerinfo)
+ {
+ refreshRoute(mediarouter);
+ }
+
+ public void onProviderChanged(MediaRouter mediarouter, android.support.v7.media.MediaRouter.ProviderInfo providerinfo)
+ {
+ refreshRoute(mediarouter);
+ }
+
+ public void onProviderRemoved(MediaRouter mediarouter, android.support.v7.media.MediaRouter.ProviderInfo providerinfo)
+ {
+ refreshRoute(mediarouter);
+ }
+
+ public void onRouteAdded(MediaRouter mediarouter, android.support.v7.media.MediaRouter.RouteInfo routeinfo)
+ {
+ refreshRoute(mediarouter);
+ }
+
+ public void onRouteChanged(MediaRouter mediarouter, android.support.v7.media.MediaRouter.RouteInfo routeinfo)
+ {
+ refreshRoute(mediarouter);
+ }
+
+ public void onRouteRemoved(MediaRouter mediarouter, android.support.v7.media.MediaRouter.RouteInfo routeinfo)
+ {
+ refreshRoute(mediarouter);
+ }
+
+ private final WeakReference mProviderWeak;
+
+ public MediaRouterCallback(MediaRouteActionProvider mediarouteactionprovider)
+ {
+ mProviderWeak = new WeakReference(mediarouteactionprovider);
+ }
+ }
+
+
+ public MediaRouteActionProvider(Context context)
+ {
+ super(context);
+ mSelector = MediaRouteSelector.EMPTY;
+ mDialogFactory = MediaRouteDialogFactory.getDefault();
+ mRouter = MediaRouter.getInstance(context);
+ }
+
+ private void refreshRoute()
+ {
+ refreshVisibility();
+ }
+
+ public MediaRouteDialogFactory getDialogFactory()
+ {
+ return mDialogFactory;
+ }
+
+ public MediaRouteButton getMediaRouteButton()
+ {
+ return mButton;
+ }
+
+ public MediaRouteSelector getRouteSelector()
+ {
+ return mSelector;
+ }
+
+ public boolean isVisible()
+ {
+ return mRouter.isRouteAvailable(mSelector, 1);
+ }
+
+ public View onCreateActionView()
+ {
+ if(mButton != null)
+ Log.e("MediaRouteActionProvider", "onCreateActionView: this ActionProvider is already associated with a menu item. Don't reuse MediaRouteActionProvider instances! Abandoning the old menu item...");
+ mButton = onCreateMediaRouteButton();
+ mButton.setCheatSheetEnabled(true);
+ mButton.setRouteSelector(mSelector);
+ mButton.setDialogFactory(mDialogFactory);
+ mButton.setLayoutParams(new android.view.ViewGroup.LayoutParams(-2, -1));
+ return mButton;
+ }
+
+ public MediaRouteButton onCreateMediaRouteButton()
+ {
+ return new MediaRouteButton(getContext());
+ }
+
+ public boolean onPerformDefaultAction()
+ {
+ boolean flag;
+ if(mButton != null)
+ flag = mButton.showDialog();
+ else
+ flag = false;
+ return flag;
+ }
+
+ public boolean overridesItemVisibility()
+ {
+ return true;
+ }
+
+ public void setDialogFactory(MediaRouteDialogFactory mediaroutedialogfactory)
+ {
+ if(mediaroutedialogfactory == null)
+ throw new IllegalArgumentException("factory must not be null");
+ if(mDialogFactory != mediaroutedialogfactory)
+ {
+ mDialogFactory = mediaroutedialogfactory;
+ if(mButton != null)
+ mButton.setDialogFactory(mediaroutedialogfactory);
+ }
+ }
+
+ public void setRouteSelector(MediaRouteSelector mediarouteselector)
+ {
+ if(mediarouteselector == null)
+ throw new IllegalArgumentException("selector must not be null");
+ if(!mSelector.equals(mediarouteselector))
+ {
+ if(!mSelector.isEmpty())
+ mRouter.removeCallback(mCallback);
+ if(!mediarouteselector.isEmpty())
+ mRouter.addCallback(mediarouteselector, mCallback);
+ mSelector = mediarouteselector;
+ refreshRoute();
+ if(mButton != null)
+ mButton.setRouteSelector(mediarouteselector);
+ }
+ }
+
+ private static final String TAG = "MediaRouteActionProvider";
+ private MediaRouteButton mButton;
+ private final MediaRouterCallback mCallback = new MediaRouterCallback(this);
+ private MediaRouteDialogFactory mDialogFactory;
+ private final MediaRouter mRouter;
+ private MediaRouteSelector mSelector;
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v7/app/MediaRouteButton.java b/1_6.h12_dev/sonos.jad/src/android/support/v7/app/MediaRouteButton.java
new file mode 100644
index 0000000..0970b0a
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v7/app/MediaRouteButton.java
@@ -0,0 +1,508 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v7.app;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.ContextWrapper;
+import android.content.res.Resources;
+import android.content.res.TypedArray;
+import android.graphics.Canvas;
+import android.graphics.Rect;
+import android.graphics.drawable.Drawable;
+import android.support.v4.app.FragmentActivity;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.graphics.drawable.DrawableCompat;
+import android.support.v7.media.MediaRouteSelector;
+import android.support.v7.media.MediaRouter;
+import android.text.TextUtils;
+import android.util.*;
+import android.view.View;
+import android.widget.Toast;
+
+// Referenced classes of package android.support.v7.app:
+// MediaRouterThemeHelper, MediaRouteDialogFactory, MediaRouteChooserDialogFragment, MediaRouteControllerDialogFragment
+
+public class MediaRouteButton extends View
+{
+ private final class MediaRouterCallback extends android.support.v7.media.MediaRouter.Callback
+ {
+
+ public void onProviderAdded(MediaRouter mediarouter, android.support.v7.media.MediaRouter.ProviderInfo providerinfo)
+ {
+ refreshRoute();
+ }
+
+ public void onProviderChanged(MediaRouter mediarouter, android.support.v7.media.MediaRouter.ProviderInfo providerinfo)
+ {
+ refreshRoute();
+ }
+
+ public void onProviderRemoved(MediaRouter mediarouter, android.support.v7.media.MediaRouter.ProviderInfo providerinfo)
+ {
+ refreshRoute();
+ }
+
+ public void onRouteAdded(MediaRouter mediarouter, android.support.v7.media.MediaRouter.RouteInfo routeinfo)
+ {
+ refreshRoute();
+ }
+
+ public void onRouteChanged(MediaRouter mediarouter, android.support.v7.media.MediaRouter.RouteInfo routeinfo)
+ {
+ refreshRoute();
+ }
+
+ public void onRouteRemoved(MediaRouter mediarouter, android.support.v7.media.MediaRouter.RouteInfo routeinfo)
+ {
+ refreshRoute();
+ }
+
+ public void onRouteSelected(MediaRouter mediarouter, android.support.v7.media.MediaRouter.RouteInfo routeinfo)
+ {
+ refreshRoute();
+ }
+
+ public void onRouteUnselected(MediaRouter mediarouter, android.support.v7.media.MediaRouter.RouteInfo routeinfo)
+ {
+ refreshRoute();
+ }
+
+ final MediaRouteButton this$0;
+
+ private MediaRouterCallback()
+ {
+ this$0 = MediaRouteButton.this;
+ super();
+ }
+
+ }
+
+
+ public MediaRouteButton(Context context)
+ {
+ this(context, null);
+ }
+
+ public MediaRouteButton(Context context, AttributeSet attributeset)
+ {
+ this(context, attributeset, android.support.v7.mediarouter.R.attr.mediaRouteButtonStyle);
+ }
+
+ public MediaRouteButton(Context context, AttributeSet attributeset, int i)
+ {
+ super(MediaRouterThemeHelper.createThemedContext(context, false), attributeset, i);
+ mSelector = MediaRouteSelector.EMPTY;
+ mDialogFactory = MediaRouteDialogFactory.getDefault();
+ Context context1 = getContext();
+ mRouter = MediaRouter.getInstance(context1);
+ mCallback = new MediaRouterCallback();
+ TypedArray typedarray = context1.obtainStyledAttributes(attributeset, android.support.v7.mediarouter.R.styleable.MediaRouteButton, i, 0);
+ setRemoteIndicatorDrawable(typedarray.getDrawable(android.support.v7.mediarouter.R.styleable.MediaRouteButton_externalRouteEnabledDrawable));
+ mMinWidth = typedarray.getDimensionPixelSize(android.support.v7.mediarouter.R.styleable.MediaRouteButton_android_minWidth, 0);
+ mMinHeight = typedarray.getDimensionPixelSize(android.support.v7.mediarouter.R.styleable.MediaRouteButton_android_minHeight, 0);
+ typedarray.recycle();
+ setClickable(true);
+ setLongClickable(true);
+ }
+
+ private Activity getActivity()
+ {
+ Context context = getContext();
+_L3:
+ if(!(context instanceof ContextWrapper))
+ break MISSING_BLOCK_LABEL_37;
+ if(!(context instanceof Activity)) goto _L2; else goto _L1
+_L1:
+ Activity activity = (Activity)context;
+_L4:
+ return activity;
+_L2:
+ context = ((ContextWrapper)context).getBaseContext();
+ goto _L3
+ activity = null;
+ goto _L4
+ }
+
+ private FragmentManager getFragmentManager()
+ {
+ Activity activity = getActivity();
+ FragmentManager fragmentmanager;
+ if(activity instanceof FragmentActivity)
+ fragmentmanager = ((FragmentActivity)activity).getSupportFragmentManager();
+ else
+ fragmentmanager = null;
+ return fragmentmanager;
+ }
+
+ private void refreshRoute()
+ {
+ boolean flag = false;
+ if(mAttachedToWindow)
+ {
+ android.support.v7.media.MediaRouter.RouteInfo routeinfo = mRouter.getSelectedRoute();
+ boolean flag1;
+ boolean flag2;
+ if(!routeinfo.isDefault() && routeinfo.matchesSelector(mSelector))
+ flag1 = true;
+ else
+ flag1 = false;
+ if(flag1 && routeinfo.isConnecting())
+ flag = true;
+ flag2 = false;
+ if(mRemoteActive != flag1)
+ {
+ mRemoteActive = flag1;
+ flag2 = true;
+ }
+ if(mIsConnecting != flag)
+ {
+ mIsConnecting = flag;
+ flag2 = true;
+ }
+ if(flag2)
+ refreshDrawableState();
+ setEnabled(mRouter.isRouteAvailable(mSelector, 1));
+ }
+ }
+
+ private void setRemoteIndicatorDrawable(Drawable drawable)
+ {
+ if(mRemoteIndicator != null)
+ {
+ mRemoteIndicator.setCallback(null);
+ unscheduleDrawable(mRemoteIndicator);
+ }
+ mRemoteIndicator = drawable;
+ if(drawable != null)
+ {
+ drawable.setCallback(this);
+ drawable.setState(getDrawableState());
+ boolean flag;
+ if(getVisibility() == 0)
+ flag = true;
+ else
+ flag = false;
+ drawable.setVisible(flag, false);
+ }
+ refreshDrawableState();
+ }
+
+ protected void drawableStateChanged()
+ {
+ super.drawableStateChanged();
+ if(mRemoteIndicator != null)
+ {
+ int ai[] = getDrawableState();
+ mRemoteIndicator.setState(ai);
+ invalidate();
+ }
+ }
+
+ public MediaRouteDialogFactory getDialogFactory()
+ {
+ return mDialogFactory;
+ }
+
+ public MediaRouteSelector getRouteSelector()
+ {
+ return mSelector;
+ }
+
+ public void jumpDrawablesToCurrentState()
+ {
+ if(getBackground() != null)
+ DrawableCompat.jumpToCurrentState(getBackground());
+ if(mRemoteIndicator != null)
+ DrawableCompat.jumpToCurrentState(mRemoteIndicator);
+ }
+
+ public void onAttachedToWindow()
+ {
+ super.onAttachedToWindow();
+ mAttachedToWindow = true;
+ if(!mSelector.isEmpty())
+ mRouter.addCallback(mSelector, mCallback);
+ refreshRoute();
+ }
+
+ protected int[] onCreateDrawableState(int i)
+ {
+ int ai[] = super.onCreateDrawableState(i + 1);
+ if(!mIsConnecting) goto _L2; else goto _L1
+_L1:
+ mergeDrawableStates(ai, CHECKABLE_STATE_SET);
+_L4:
+ return ai;
+_L2:
+ if(mRemoteActive)
+ mergeDrawableStates(ai, CHECKED_STATE_SET);
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ public void onDetachedFromWindow()
+ {
+ mAttachedToWindow = false;
+ if(!mSelector.isEmpty())
+ mRouter.removeCallback(mCallback);
+ super.onDetachedFromWindow();
+ }
+
+ protected void onDraw(Canvas canvas)
+ {
+ super.onDraw(canvas);
+ if(mRemoteIndicator != null)
+ {
+ int i = getPaddingLeft();
+ int j = getWidth() - getPaddingRight();
+ int k = getPaddingTop();
+ int l = getHeight() - getPaddingBottom();
+ int i1 = mRemoteIndicator.getIntrinsicWidth();
+ int j1 = mRemoteIndicator.getIntrinsicHeight();
+ int k1 = i + (j - i - i1) / 2;
+ int l1 = k + (l - k - j1) / 2;
+ mRemoteIndicator.setBounds(k1, l1, k1 + i1, l1 + j1);
+ mRemoteIndicator.draw(canvas);
+ }
+ }
+
+ protected void onMeasure(int i, int j)
+ {
+ int l;
+ int i1;
+ int j2;
+ int l2;
+ int i3;
+ int j3;
+ int k = 0;
+ l = android.view.View.MeasureSpec.getSize(i);
+ i1 = android.view.View.MeasureSpec.getSize(j);
+ int j1 = android.view.View.MeasureSpec.getMode(i);
+ int k1 = android.view.View.MeasureSpec.getMode(j);
+ int l1 = mMinWidth;
+ int i2;
+ int k2;
+ if(mRemoteIndicator != null)
+ i2 = mRemoteIndicator.getIntrinsicWidth();
+ else
+ i2 = 0;
+ j2 = Math.max(l1, i2);
+ k2 = mMinHeight;
+ if(mRemoteIndicator != null)
+ k = mRemoteIndicator.getIntrinsicHeight();
+ l2 = Math.max(k2, k);
+ j1;
+ JVM INSTR lookupswitch 2: default 116
+ // -2147483648: 196
+ // 1073741824: 189;
+ goto _L1 _L2 _L3
+_L1:
+ i3 = j2 + getPaddingLeft() + getPaddingRight();
+_L7:
+ k1;
+ JVM INSTR lookupswitch 2: default 160
+ // -2147483648: 225
+ // 1073741824: 218;
+ goto _L4 _L5 _L6
+_L4:
+ j3 = l2 + getPaddingTop() + getPaddingBottom();
+_L8:
+ setMeasuredDimension(i3, j3);
+ return;
+_L3:
+ i3 = l;
+ goto _L7
+_L2:
+ i3 = Math.min(l, j2 + getPaddingLeft() + getPaddingRight());
+ goto _L7
+_L6:
+ j3 = i1;
+ goto _L8
+_L5:
+ j3 = Math.min(i1, l2 + getPaddingTop() + getPaddingBottom());
+ goto _L8
+ }
+
+ public boolean performClick()
+ {
+ boolean flag = false;
+ boolean flag1 = super.performClick();
+ if(!flag1)
+ playSoundEffect(0);
+ if(showDialog() || flag1)
+ flag = true;
+ return flag;
+ }
+
+ public boolean performLongClick()
+ {
+ boolean flag = true;
+ if(!super.performLongClick())
+ if(!mCheatSheetEnabled)
+ {
+ flag = false;
+ } else
+ {
+ CharSequence charsequence = getContentDescription();
+ if(TextUtils.isEmpty(charsequence))
+ {
+ flag = false;
+ } else
+ {
+ int ai[] = new int[2];
+ Rect rect = new Rect();
+ getLocationOnScreen(ai);
+ getWindowVisibleDisplayFrame(rect);
+ Context context = getContext();
+ int i = getWidth();
+ int j = getHeight();
+ int k = ai[flag] + j / 2;
+ int l = context.getResources().getDisplayMetrics().widthPixels;
+ Toast toast = Toast.makeText(context, charsequence, 0);
+ if(k < rect.height())
+ toast.setGravity(0x800035, l - ai[0] - i / 2, j);
+ else
+ toast.setGravity(81, 0, j);
+ toast.show();
+ performHapticFeedback(0);
+ }
+ }
+ return flag;
+ }
+
+ void setCheatSheetEnabled(boolean flag)
+ {
+ mCheatSheetEnabled = flag;
+ }
+
+ public void setDialogFactory(MediaRouteDialogFactory mediaroutedialogfactory)
+ {
+ if(mediaroutedialogfactory == null)
+ {
+ throw new IllegalArgumentException("factory must not be null");
+ } else
+ {
+ mDialogFactory = mediaroutedialogfactory;
+ return;
+ }
+ }
+
+ public void setRouteSelector(MediaRouteSelector mediarouteselector)
+ {
+ if(mediarouteselector == null)
+ throw new IllegalArgumentException("selector must not be null");
+ if(!mSelector.equals(mediarouteselector))
+ {
+ if(mAttachedToWindow)
+ {
+ if(!mSelector.isEmpty())
+ mRouter.removeCallback(mCallback);
+ if(!mediarouteselector.isEmpty())
+ mRouter.addCallback(mediarouteselector, mCallback);
+ }
+ mSelector = mediarouteselector;
+ refreshRoute();
+ }
+ }
+
+ public void setVisibility(int i)
+ {
+ super.setVisibility(i);
+ if(mRemoteIndicator != null)
+ {
+ Drawable drawable = mRemoteIndicator;
+ boolean flag;
+ if(getVisibility() == 0)
+ flag = true;
+ else
+ flag = false;
+ drawable.setVisible(flag, false);
+ }
+ }
+
+ public boolean showDialog()
+ {
+ FragmentManager fragmentmanager;
+ boolean flag = false;
+ if(mAttachedToWindow)
+ {
+ fragmentmanager = getFragmentManager();
+ if(fragmentmanager == null)
+ throw new IllegalStateException("The activity must be a subclass of FragmentActivity");
+ android.support.v7.media.MediaRouter.RouteInfo routeinfo = mRouter.getSelectedRoute();
+ MediaRouteChooserDialogFragment mediaroutechooserdialogfragment;
+ if(routeinfo.isDefault() || !routeinfo.matchesSelector(mSelector))
+ {
+label0:
+ {
+ if(fragmentmanager.findFragmentByTag("android.support.v7.mediarouter:MediaRouteChooserDialogFragment") == null)
+ break label0;
+ Log.w("MediaRouteButton", "showDialog(): Route chooser dialog already showing!");
+ }
+ } else
+ {
+label1:
+ {
+ if(fragmentmanager.findFragmentByTag("android.support.v7.mediarouter:MediaRouteControllerDialogFragment") == null)
+ break label1;
+ Log.w("MediaRouteButton", "showDialog(): Route controller dialog already showing!");
+ }
+ }
+ }
+_L2:
+ return flag;
+ mediaroutechooserdialogfragment = mDialogFactory.onCreateChooserDialogFragment();
+ mediaroutechooserdialogfragment.setRouteSelector(mSelector);
+ mediaroutechooserdialogfragment.show(fragmentmanager, "android.support.v7.mediarouter:MediaRouteChooserDialogFragment");
+ do
+ {
+ flag = true;
+ if(true)
+ break MISSING_BLOCK_LABEL_9;
+ mDialogFactory.onCreateControllerDialogFragment().show(fragmentmanager, "android.support.v7.mediarouter:MediaRouteControllerDialogFragment");
+ } while(true);
+ if(true) goto _L2; else goto _L1
+_L1:
+ }
+
+ protected boolean verifyDrawable(Drawable drawable)
+ {
+ boolean flag;
+ if(super.verifyDrawable(drawable) || drawable == mRemoteIndicator)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ private static final int CHECKABLE_STATE_SET[];
+ private static final int CHECKED_STATE_SET[];
+ private static final String CHOOSER_FRAGMENT_TAG = "android.support.v7.mediarouter:MediaRouteChooserDialogFragment";
+ private static final String CONTROLLER_FRAGMENT_TAG = "android.support.v7.mediarouter:MediaRouteControllerDialogFragment";
+ private static final String TAG = "MediaRouteButton";
+ private boolean mAttachedToWindow;
+ private final MediaRouterCallback mCallback;
+ private boolean mCheatSheetEnabled;
+ private MediaRouteDialogFactory mDialogFactory;
+ private boolean mIsConnecting;
+ private int mMinHeight;
+ private int mMinWidth;
+ private boolean mRemoteActive;
+ private Drawable mRemoteIndicator;
+ private final MediaRouter mRouter;
+ private MediaRouteSelector mSelector;
+
+ static
+ {
+ int ai[] = new int[1];
+ ai[0] = 0x10100a0;
+ CHECKED_STATE_SET = ai;
+ int ai1[] = new int[1];
+ ai1[0] = 0x101009f;
+ CHECKABLE_STATE_SET = ai1;
+ }
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v7/app/MediaRouteChooserDialog.java b/1_6.h12_dev/sonos.jad/src/android/support/v7/app/MediaRouteChooserDialog.java
new file mode 100644
index 0000000..0dc0daa
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v7/app/MediaRouteChooserDialog.java
@@ -0,0 +1,252 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v7.app;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.support.v7.media.MediaRouteSelector;
+import android.support.v7.media.MediaRouter;
+import android.text.TextUtils;
+import android.view.*;
+import android.widget.*;
+import java.util.*;
+
+// Referenced classes of package android.support.v7.app:
+// MediaRouterThemeHelper
+
+public class MediaRouteChooserDialog extends Dialog
+{
+ private static final class RouteComparator
+ implements Comparator
+ {
+
+ public int compare(android.support.v7.media.MediaRouter.RouteInfo routeinfo, android.support.v7.media.MediaRouter.RouteInfo routeinfo1)
+ {
+ return routeinfo.getName().compareTo(routeinfo1.getName());
+ }
+
+ public volatile int compare(Object obj, Object obj1)
+ {
+ return compare((android.support.v7.media.MediaRouter.RouteInfo)obj, (android.support.v7.media.MediaRouter.RouteInfo)obj1);
+ }
+
+ public static final RouteComparator sInstance = new RouteComparator();
+
+
+ private RouteComparator()
+ {
+ }
+ }
+
+ private final class MediaRouterCallback extends android.support.v7.media.MediaRouter.Callback
+ {
+
+ public void onRouteAdded(MediaRouter mediarouter, android.support.v7.media.MediaRouter.RouteInfo routeinfo)
+ {
+ refreshRoutes();
+ }
+
+ public void onRouteChanged(MediaRouter mediarouter, android.support.v7.media.MediaRouter.RouteInfo routeinfo)
+ {
+ refreshRoutes();
+ }
+
+ public void onRouteRemoved(MediaRouter mediarouter, android.support.v7.media.MediaRouter.RouteInfo routeinfo)
+ {
+ refreshRoutes();
+ }
+
+ public void onRouteSelected(MediaRouter mediarouter, android.support.v7.media.MediaRouter.RouteInfo routeinfo)
+ {
+ dismiss();
+ }
+
+ final MediaRouteChooserDialog this$0;
+
+ private MediaRouterCallback()
+ {
+ this$0 = MediaRouteChooserDialog.this;
+ super();
+ }
+
+ }
+
+ private final class RouteAdapter extends ArrayAdapter
+ implements android.widget.AdapterView.OnItemClickListener
+ {
+
+ public boolean areAllItemsEnabled()
+ {
+ return false;
+ }
+
+ public View getView(int i, View view, ViewGroup viewgroup)
+ {
+ View view1 = view;
+ if(view1 == null)
+ view1 = mInflater.inflate(android.support.v7.mediarouter.R.layout.mr_media_route_list_item, viewgroup, false);
+ android.support.v7.media.MediaRouter.RouteInfo routeinfo = (android.support.v7.media.MediaRouter.RouteInfo)getItem(i);
+ TextView textview = (TextView)view1.findViewById(0x1020014);
+ TextView textview1 = (TextView)view1.findViewById(0x1020015);
+ textview.setText(routeinfo.getName());
+ String s = routeinfo.getDescription();
+ if(TextUtils.isEmpty(s))
+ {
+ textview1.setVisibility(8);
+ textview1.setText("");
+ } else
+ {
+ textview1.setVisibility(0);
+ textview1.setText(s);
+ }
+ view1.setEnabled(routeinfo.isEnabled());
+ return view1;
+ }
+
+ public boolean isEnabled(int i)
+ {
+ return ((android.support.v7.media.MediaRouter.RouteInfo)getItem(i)).isEnabled();
+ }
+
+ public void onItemClick(AdapterView adapterview, View view, int i, long l)
+ {
+ android.support.v7.media.MediaRouter.RouteInfo routeinfo = (android.support.v7.media.MediaRouter.RouteInfo)getItem(i);
+ if(routeinfo.isEnabled())
+ {
+ routeinfo.select();
+ dismiss();
+ }
+ }
+
+ private final LayoutInflater mInflater;
+ final MediaRouteChooserDialog this$0;
+
+ public RouteAdapter(Context context, List list)
+ {
+ this$0 = MediaRouteChooserDialog.this;
+ super(context, 0, list);
+ mInflater = LayoutInflater.from(context);
+ }
+ }
+
+
+ public MediaRouteChooserDialog(Context context)
+ {
+ this(context, 0);
+ }
+
+ public MediaRouteChooserDialog(Context context, int i)
+ {
+ super(MediaRouterThemeHelper.createThemedContext(context, true), i);
+ mSelector = MediaRouteSelector.EMPTY;
+ mRouter = MediaRouter.getInstance(getContext());
+ mCallback = new MediaRouterCallback();
+ }
+
+ public MediaRouteSelector getRouteSelector()
+ {
+ return mSelector;
+ }
+
+ public void onAttachedToWindow()
+ {
+ super.onAttachedToWindow();
+ mAttachedToWindow = true;
+ mRouter.addCallback(mSelector, mCallback, 1);
+ refreshRoutes();
+ }
+
+ protected void onCreate(Bundle bundle)
+ {
+ super.onCreate(bundle);
+ getWindow().requestFeature(3);
+ setContentView(android.support.v7.mediarouter.R.layout.mr_media_route_chooser_dialog);
+ setTitle(android.support.v7.mediarouter.R.string.mr_media_route_chooser_title);
+ getWindow().setFeatureDrawableResource(3, MediaRouterThemeHelper.getThemeResource(getContext(), android.support.v7.mediarouter.R.attr.mediaRouteOffDrawable));
+ mRoutes = new ArrayList();
+ mAdapter = new RouteAdapter(getContext(), mRoutes);
+ mListView = (ListView)findViewById(android.support.v7.mediarouter.R.id.media_route_list);
+ mListView.setAdapter(mAdapter);
+ mListView.setOnItemClickListener(mAdapter);
+ mListView.setEmptyView(findViewById(0x1020004));
+ }
+
+ public void onDetachedFromWindow()
+ {
+ mAttachedToWindow = false;
+ mRouter.removeCallback(mCallback);
+ super.onDetachedFromWindow();
+ }
+
+ public boolean onFilterRoute(android.support.v7.media.MediaRouter.RouteInfo routeinfo)
+ {
+ boolean flag;
+ if(!routeinfo.isDefault() && routeinfo.isEnabled() && routeinfo.matchesSelector(mSelector))
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ public void onFilterRoutes(List list)
+ {
+ int i = list.size();
+ do
+ {
+ int j = i - 1;
+ if(i > 0)
+ {
+ if(!onFilterRoute((android.support.v7.media.MediaRouter.RouteInfo)list.get(j)))
+ {
+ list.remove(j);
+ i = j;
+ } else
+ {
+ i = j;
+ }
+ } else
+ {
+ return;
+ }
+ } while(true);
+ }
+
+ public void refreshRoutes()
+ {
+ if(mAttachedToWindow)
+ {
+ mRoutes.clear();
+ mRoutes.addAll(mRouter.getRoutes());
+ onFilterRoutes(mRoutes);
+ Collections.sort(mRoutes, RouteComparator.sInstance);
+ mAdapter.notifyDataSetChanged();
+ }
+ }
+
+ public void setRouteSelector(MediaRouteSelector mediarouteselector)
+ {
+ if(mediarouteselector == null)
+ throw new IllegalArgumentException("selector must not be null");
+ if(!mSelector.equals(mediarouteselector))
+ {
+ mSelector = mediarouteselector;
+ if(mAttachedToWindow)
+ {
+ mRouter.removeCallback(mCallback);
+ mRouter.addCallback(mediarouteselector, mCallback, 1);
+ }
+ refreshRoutes();
+ }
+ }
+
+ private RouteAdapter mAdapter;
+ private boolean mAttachedToWindow;
+ private final MediaRouterCallback mCallback;
+ private ListView mListView;
+ private final MediaRouter mRouter;
+ private ArrayList mRoutes;
+ private MediaRouteSelector mSelector;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v7/app/MediaRouteChooserDialogFragment.java b/1_6.h12_dev/sonos.jad/src/android/support/v7/app/MediaRouteChooserDialogFragment.java
new file mode 100644
index 0000000..ade30b4
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v7/app/MediaRouteChooserDialogFragment.java
@@ -0,0 +1,75 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v7.app;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.support.v4.app.DialogFragment;
+import android.support.v7.media.MediaRouteSelector;
+
+// Referenced classes of package android.support.v7.app:
+// MediaRouteChooserDialog
+
+public class MediaRouteChooserDialogFragment extends DialogFragment
+{
+
+ public MediaRouteChooserDialogFragment()
+ {
+ setCancelable(true);
+ }
+
+ private void ensureRouteSelector()
+ {
+ if(mSelector == null)
+ {
+ Bundle bundle = getArguments();
+ if(bundle != null)
+ mSelector = MediaRouteSelector.fromBundle(bundle.getBundle("selector"));
+ if(mSelector == null)
+ mSelector = MediaRouteSelector.EMPTY;
+ }
+ }
+
+ public MediaRouteSelector getRouteSelector()
+ {
+ ensureRouteSelector();
+ return mSelector;
+ }
+
+ public MediaRouteChooserDialog onCreateChooserDialog(Context context, Bundle bundle)
+ {
+ return new MediaRouteChooserDialog(context);
+ }
+
+ public Dialog onCreateDialog(Bundle bundle)
+ {
+ MediaRouteChooserDialog mediaroutechooserdialog = onCreateChooserDialog(getActivity(), bundle);
+ mediaroutechooserdialog.setRouteSelector(getRouteSelector());
+ return mediaroutechooserdialog;
+ }
+
+ public void setRouteSelector(MediaRouteSelector mediarouteselector)
+ {
+ if(mediarouteselector == null)
+ throw new IllegalArgumentException("selector must not be null");
+ ensureRouteSelector();
+ if(!mSelector.equals(mediarouteselector))
+ {
+ mSelector = mediarouteselector;
+ Bundle bundle = getArguments();
+ if(bundle == null)
+ bundle = new Bundle();
+ bundle.putBundle("selector", mediarouteselector.asBundle());
+ setArguments(bundle);
+ MediaRouteChooserDialog mediaroutechooserdialog = (MediaRouteChooserDialog)getDialog();
+ if(mediaroutechooserdialog != null)
+ mediaroutechooserdialog.setRouteSelector(mediarouteselector);
+ }
+ }
+
+ private final String ARGUMENT_SELECTOR = "selector";
+ private MediaRouteSelector mSelector;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v7/app/MediaRouteControllerDialog.java b/1_6.h12_dev/sonos.jad/src/android/support/v7/app/MediaRouteControllerDialog.java
new file mode 100644
index 0000000..033af15
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v7/app/MediaRouteControllerDialog.java
@@ -0,0 +1,322 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v7.app;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.support.v7.media.MediaRouteSelector;
+import android.support.v7.media.MediaRouter;
+import android.view.*;
+import android.widget.*;
+
+// Referenced classes of package android.support.v7.app:
+// MediaRouterThemeHelper
+
+public class MediaRouteControllerDialog extends Dialog
+{
+ private final class MediaRouterCallback extends android.support.v7.media.MediaRouter.Callback
+ {
+
+ public void onRouteChanged(MediaRouter mediarouter, android.support.v7.media.MediaRouter.RouteInfo routeinfo)
+ {
+ update();
+ }
+
+ public void onRouteUnselected(MediaRouter mediarouter, android.support.v7.media.MediaRouter.RouteInfo routeinfo)
+ {
+ update();
+ }
+
+ public void onRouteVolumeChanged(MediaRouter mediarouter, android.support.v7.media.MediaRouter.RouteInfo routeinfo)
+ {
+ if(routeinfo == mRoute)
+ updateVolume();
+ }
+
+ final MediaRouteControllerDialog this$0;
+
+ private MediaRouterCallback()
+ {
+ this$0 = MediaRouteControllerDialog.this;
+ super();
+ }
+
+ }
+
+
+ public MediaRouteControllerDialog(Context context)
+ {
+ this(context, 0);
+ }
+
+ public MediaRouteControllerDialog(Context context, int i)
+ {
+ super(MediaRouterThemeHelper.createThemedContext(context, true), i);
+ mVolumeControlEnabled = true;
+ mRouter = MediaRouter.getInstance(getContext());
+ mCallback = new MediaRouterCallback();
+ mRoute = mRouter.getSelectedRoute();
+ }
+
+ private Drawable getIconDrawable()
+ {
+ Drawable drawable;
+ if(mRoute.isConnecting())
+ {
+ if(mMediaRouteConnectingDrawable == null)
+ mMediaRouteConnectingDrawable = MediaRouterThemeHelper.getThemeDrawable(getContext(), android.support.v7.mediarouter.R.attr.mediaRouteConnectingDrawable);
+ drawable = mMediaRouteConnectingDrawable;
+ } else
+ {
+ if(mMediaRouteOnDrawable == null)
+ mMediaRouteOnDrawable = MediaRouterThemeHelper.getThemeDrawable(getContext(), android.support.v7.mediarouter.R.attr.mediaRouteOnDrawable);
+ drawable = mMediaRouteOnDrawable;
+ }
+ return drawable;
+ }
+
+ private boolean isVolumeControlAvailable()
+ {
+ boolean flag = true;
+ if(!mVolumeControlEnabled || mRoute.getVolumeHandling() != flag)
+ flag = false;
+ return flag;
+ }
+
+ private boolean update()
+ {
+ boolean flag = true;
+ if(mRoute.isSelected() && !mRoute.isDefault()) goto _L2; else goto _L1
+_L1:
+ dismiss();
+ flag = false;
+_L4:
+ return flag;
+_L2:
+ setTitle(mRoute.getName());
+ updateVolume();
+ Drawable drawable = getIconDrawable();
+ if(drawable != mCurrentIconDrawable)
+ {
+ mCurrentIconDrawable = drawable;
+ drawable.setVisible(false, flag);
+ getWindow().setFeatureDrawable(3, drawable);
+ }
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ private void updateVolume()
+ {
+ if(!mVolumeSliderTouched)
+ if(isVolumeControlAvailable())
+ {
+ mVolumeLayout.setVisibility(0);
+ mVolumeSlider.setMax(mRoute.getVolumeMax());
+ mVolumeSlider.setProgress(mRoute.getVolume());
+ } else
+ {
+ mVolumeLayout.setVisibility(8);
+ }
+ }
+
+ public View getMediaControlView()
+ {
+ return mControlView;
+ }
+
+ public android.support.v7.media.MediaRouter.RouteInfo getRoute()
+ {
+ return mRoute;
+ }
+
+ public boolean isVolumeControlEnabled()
+ {
+ return mVolumeControlEnabled;
+ }
+
+ public void onAttachedToWindow()
+ {
+ super.onAttachedToWindow();
+ mRouter.addCallback(MediaRouteSelector.EMPTY, mCallback, 2);
+ update();
+ }
+
+ protected void onCreate(Bundle bundle)
+ {
+ super.onCreate(bundle);
+ getWindow().requestFeature(3);
+ setContentView(android.support.v7.mediarouter.R.layout.mr_media_route_controller_dialog);
+ mVolumeLayout = (LinearLayout)findViewById(android.support.v7.mediarouter.R.id.media_route_volume_layout);
+ mVolumeSlider = (SeekBar)findViewById(android.support.v7.mediarouter.R.id.media_route_volume_slider);
+ mVolumeSlider.setOnSeekBarChangeListener(new android.widget.SeekBar.OnSeekBarChangeListener() {
+
+ public void onProgressChanged(SeekBar seekbar, int i, boolean flag)
+ {
+ if(flag)
+ mRoute.requestSetVolume(i);
+ }
+
+ public void onStartTrackingTouch(SeekBar seekbar)
+ {
+ if(mVolumeSliderTouched)
+ mVolumeSlider.removeCallbacks(mStopTrackingTouch);
+ else
+ mVolumeSliderTouched = true;
+ }
+
+ public void onStopTrackingTouch(SeekBar seekbar)
+ {
+ mVolumeSlider.postDelayed(mStopTrackingTouch, 250L);
+ }
+
+ private final Runnable mStopTrackingTouch = new Runnable() {
+
+ public void run()
+ {
+ if(mVolumeSliderTouched)
+ {
+ mVolumeSliderTouched = false;
+ updateVolume();
+ }
+ }
+
+ final _cls1 this$1;
+
+
+ {
+ this$1 = _cls1.this;
+ super();
+ }
+ }
+;
+ final MediaRouteControllerDialog this$0;
+
+
+ {
+ this$0 = MediaRouteControllerDialog.this;
+ super();
+ }
+ }
+);
+ mDisconnectButton = (Button)findViewById(android.support.v7.mediarouter.R.id.media_route_disconnect_button);
+ mDisconnectButton.setOnClickListener(new android.view.View.OnClickListener() {
+
+ public void onClick(View view)
+ {
+ if(mRoute.isSelected())
+ mRouter.getDefaultRoute().select();
+ dismiss();
+ }
+
+ final MediaRouteControllerDialog this$0;
+
+
+ {
+ this$0 = MediaRouteControllerDialog.this;
+ super();
+ }
+ }
+);
+ mCreated = true;
+ if(update())
+ {
+ mControlView = onCreateMediaControlView(bundle);
+ FrameLayout framelayout = (FrameLayout)findViewById(android.support.v7.mediarouter.R.id.media_route_control_frame);
+ if(mControlView != null)
+ {
+ framelayout.addView(mControlView);
+ framelayout.setVisibility(0);
+ } else
+ {
+ framelayout.setVisibility(8);
+ }
+ }
+ }
+
+ public View onCreateMediaControlView(Bundle bundle)
+ {
+ return null;
+ }
+
+ public void onDetachedFromWindow()
+ {
+ mRouter.removeCallback(mCallback);
+ super.onDetachedFromWindow();
+ }
+
+ public boolean onKeyDown(int i, KeyEvent keyevent)
+ {
+ boolean flag = true;
+ if(i == 25 || i == 24)
+ {
+ android.support.v7.media.MediaRouter.RouteInfo routeinfo = mRoute;
+ byte byte0;
+ if(i == 25)
+ byte0 = -1;
+ else
+ byte0 = flag;
+ routeinfo.requestUpdateVolume(byte0);
+ } else
+ {
+ flag = super.onKeyDown(i, keyevent);
+ }
+ return flag;
+ }
+
+ public boolean onKeyUp(int i, KeyEvent keyevent)
+ {
+ boolean flag;
+ if(i == 25 || i == 24)
+ flag = true;
+ else
+ flag = super.onKeyUp(i, keyevent);
+ return flag;
+ }
+
+ public void setVolumeControlEnabled(boolean flag)
+ {
+ if(mVolumeControlEnabled != flag)
+ {
+ mVolumeControlEnabled = flag;
+ if(mCreated)
+ updateVolume();
+ }
+ }
+
+ private static final String TAG = "MediaRouteControllerDialog";
+ private static final int VOLUME_UPDATE_DELAY_MILLIS = 250;
+ private final MediaRouterCallback mCallback;
+ private View mControlView;
+ private boolean mCreated;
+ private Drawable mCurrentIconDrawable;
+ private Button mDisconnectButton;
+ private Drawable mMediaRouteConnectingDrawable;
+ private Drawable mMediaRouteOnDrawable;
+ private final android.support.v7.media.MediaRouter.RouteInfo mRoute;
+ private final MediaRouter mRouter;
+ private boolean mVolumeControlEnabled;
+ private LinearLayout mVolumeLayout;
+ private SeekBar mVolumeSlider;
+ private boolean mVolumeSliderTouched;
+
+
+
+/*
+ static boolean access$102(MediaRouteControllerDialog mediaroutecontrollerdialog, boolean flag)
+ {
+ mediaroutecontrollerdialog.mVolumeSliderTouched = flag;
+ return flag;
+ }
+
+*/
+
+
+
+
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v7/app/MediaRouteControllerDialogFragment.java b/1_6.h12_dev/sonos.jad/src/android/support/v7/app/MediaRouteControllerDialogFragment.java
new file mode 100644
index 0000000..d8687d9
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v7/app/MediaRouteControllerDialogFragment.java
@@ -0,0 +1,32 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v7.app;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.support.v4.app.DialogFragment;
+
+// Referenced classes of package android.support.v7.app:
+// MediaRouteControllerDialog
+
+public class MediaRouteControllerDialogFragment extends DialogFragment
+{
+
+ public MediaRouteControllerDialogFragment()
+ {
+ setCancelable(true);
+ }
+
+ public MediaRouteControllerDialog onCreateControllerDialog(Context context, Bundle bundle)
+ {
+ return new MediaRouteControllerDialog(context);
+ }
+
+ public Dialog onCreateDialog(Bundle bundle)
+ {
+ return onCreateControllerDialog(getActivity(), bundle);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v7/app/MediaRouteDialogFactory.java b/1_6.h12_dev/sonos.jad/src/android/support/v7/app/MediaRouteDialogFactory.java
new file mode 100644
index 0000000..153709e
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v7/app/MediaRouteDialogFactory.java
@@ -0,0 +1,35 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v7.app;
+
+
+// Referenced classes of package android.support.v7.app:
+// MediaRouteChooserDialogFragment, MediaRouteControllerDialogFragment
+
+public class MediaRouteDialogFactory
+{
+
+ public MediaRouteDialogFactory()
+ {
+ }
+
+ public static MediaRouteDialogFactory getDefault()
+ {
+ return sDefault;
+ }
+
+ public MediaRouteChooserDialogFragment onCreateChooserDialogFragment()
+ {
+ return new MediaRouteChooserDialogFragment();
+ }
+
+ public MediaRouteControllerDialogFragment onCreateControllerDialogFragment()
+ {
+ return new MediaRouteControllerDialogFragment();
+ }
+
+ private static final MediaRouteDialogFactory sDefault = new MediaRouteDialogFactory();
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v7/app/MediaRouteDiscoveryFragment.java b/1_6.h12_dev/sonos.jad/src/android/support/v7/app/MediaRouteDiscoveryFragment.java
new file mode 100644
index 0000000..77556ce
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v7/app/MediaRouteDiscoveryFragment.java
@@ -0,0 +1,114 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v7.app;
+
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.support.v7.media.MediaRouteSelector;
+import android.support.v7.media.MediaRouter;
+
+public class MediaRouteDiscoveryFragment extends Fragment
+{
+
+ public MediaRouteDiscoveryFragment()
+ {
+ }
+
+ private void ensureRouteSelector()
+ {
+ if(mSelector == null)
+ {
+ Bundle bundle = getArguments();
+ if(bundle != null)
+ mSelector = MediaRouteSelector.fromBundle(bundle.getBundle("selector"));
+ if(mSelector == null)
+ mSelector = MediaRouteSelector.EMPTY;
+ }
+ }
+
+ private void ensureRouter()
+ {
+ if(mRouter == null)
+ mRouter = MediaRouter.getInstance(getActivity());
+ }
+
+ public MediaRouter getMediaRouter()
+ {
+ ensureRouter();
+ return mRouter;
+ }
+
+ public MediaRouteSelector getRouteSelector()
+ {
+ ensureRouteSelector();
+ return mSelector;
+ }
+
+ public android.support.v7.media.MediaRouter.Callback onCreateCallback()
+ {
+ return new android.support.v7.media.MediaRouter.Callback() {
+
+ final MediaRouteDiscoveryFragment this$0;
+
+
+ {
+ this$0 = MediaRouteDiscoveryFragment.this;
+ super();
+ }
+ }
+;
+ }
+
+ public int onPrepareCallbackFlags()
+ {
+ return 4;
+ }
+
+ public void onStart()
+ {
+ super.onStart();
+ ensureRouteSelector();
+ ensureRouter();
+ mCallback = onCreateCallback();
+ if(mCallback != null)
+ mRouter.addCallback(mSelector, mCallback, onPrepareCallbackFlags());
+ }
+
+ public void onStop()
+ {
+ if(mCallback != null)
+ {
+ mRouter.removeCallback(mCallback);
+ mCallback = null;
+ }
+ super.onStop();
+ }
+
+ public void setRouteSelector(MediaRouteSelector mediarouteselector)
+ {
+ if(mediarouteselector == null)
+ throw new IllegalArgumentException("selector must not be null");
+ ensureRouteSelector();
+ if(!mSelector.equals(mediarouteselector))
+ {
+ mSelector = mediarouteselector;
+ Bundle bundle = getArguments();
+ if(bundle == null)
+ bundle = new Bundle();
+ bundle.putBundle("selector", mediarouteselector.asBundle());
+ setArguments(bundle);
+ if(mCallback != null)
+ {
+ mRouter.removeCallback(mCallback);
+ mRouter.addCallback(mSelector, mCallback, onPrepareCallbackFlags());
+ }
+ }
+ }
+
+ private final String ARGUMENT_SELECTOR = "selector";
+ private android.support.v7.media.MediaRouter.Callback mCallback;
+ private MediaRouter mRouter;
+ private MediaRouteSelector mSelector;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v7/app/MediaRouterThemeHelper.java b/1_6.h12_dev/sonos.jad/src/android/support/v7/app/MediaRouterThemeHelper.java
new file mode 100644
index 0000000..c0518d0
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v7/app/MediaRouterThemeHelper.java
@@ -0,0 +1,67 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v7.app;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.drawable.Drawable;
+import android.util.TypedValue;
+import android.view.ContextThemeWrapper;
+
+final class MediaRouterThemeHelper
+{
+
+ private MediaRouterThemeHelper()
+ {
+ }
+
+ public static Context createThemedContext(Context context, boolean flag)
+ {
+ boolean flag1 = isLightTheme(context);
+ if(flag1 && flag)
+ {
+ ContextThemeWrapper contextthemewrapper = new ContextThemeWrapper(context, android.support.v7.mediarouter.R.style.Theme_AppCompat);
+ flag1 = false;
+ context = contextthemewrapper;
+ }
+ int i;
+ if(flag1)
+ i = android.support.v7.mediarouter.R.style.Theme_MediaRouter_Light;
+ else
+ i = android.support.v7.mediarouter.R.style.Theme_MediaRouter;
+ return new ContextThemeWrapper(context, i);
+ }
+
+ public static Drawable getThemeDrawable(Context context, int i)
+ {
+ int j = getThemeResource(context, i);
+ Drawable drawable;
+ if(j != 0)
+ drawable = context.getResources().getDrawable(j);
+ else
+ drawable = null;
+ return drawable;
+ }
+
+ public static int getThemeResource(Context context, int i)
+ {
+ TypedValue typedvalue = new TypedValue();
+ int j;
+ if(context.getTheme().resolveAttribute(i, typedvalue, true))
+ j = typedvalue.resourceId;
+ else
+ j = 0;
+ return j;
+ }
+
+ private static boolean isLightTheme(Context context)
+ {
+ boolean flag = true;
+ TypedValue typedvalue = new TypedValue();
+ if(!context.getTheme().resolveAttribute(android.support.v7.mediarouter.R.attr.isLightTheme, typedvalue, flag) || typedvalue.data == 0)
+ flag = false;
+ return flag;
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaControlIntent.java b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaControlIntent.java
new file mode 100644
index 0000000..4c49352
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaControlIntent.java
@@ -0,0 +1,43 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v7.media;
+
+
+public final class MediaControlIntent
+{
+
+ private MediaControlIntent()
+ {
+ }
+
+ public static final String ACTION_END_SESSION = "android.media.intent.action.END_SESSION";
+ public static final String ACTION_ENQUEUE = "android.media.intent.action.ENQUEUE";
+ public static final String ACTION_GET_SESSION_STATUS = "android.media.intent.action.GET_SESSION_STATUS";
+ public static final String ACTION_GET_STATUS = "android.media.intent.action.GET_STATUS";
+ public static final String ACTION_PAUSE = "android.media.intent.action.PAUSE";
+ public static final String ACTION_PLAY = "android.media.intent.action.PLAY";
+ public static final String ACTION_REMOVE = "android.media.intent.action.REMOVE";
+ public static final String ACTION_RESUME = "android.media.intent.action.RESUME";
+ public static final String ACTION_SEEK = "android.media.intent.action.SEEK";
+ public static final String ACTION_START_SESSION = "android.media.intent.action.START_SESSION";
+ public static final String ACTION_STOP = "android.media.intent.action.STOP";
+ public static final String CATEGORY_LIVE_AUDIO = "android.media.intent.category.LIVE_AUDIO";
+ public static final String CATEGORY_LIVE_VIDEO = "android.media.intent.category.LIVE_VIDEO";
+ public static final String CATEGORY_REMOTE_PLAYBACK = "android.media.intent.category.REMOTE_PLAYBACK";
+ public static final int ERROR_INVALID_ITEM_ID = 3;
+ public static final int ERROR_INVALID_SESSION_ID = 2;
+ public static final int ERROR_UNKNOWN = 0;
+ public static final int ERROR_UNSUPPORTED_OPERATION = 1;
+ public static final String EXTRA_ERROR_CODE = "android.media.intent.extra.ERROR_CODE";
+ public static final String EXTRA_ITEM_CONTENT_POSITION = "android.media.intent.extra.ITEM_POSITION";
+ public static final String EXTRA_ITEM_HTTP_HEADERS = "android.media.intent.extra.HTTP_HEADERS";
+ public static final String EXTRA_ITEM_ID = "android.media.intent.extra.ITEM_ID";
+ public static final String EXTRA_ITEM_METADATA = "android.media.intent.extra.ITEM_METADATA";
+ public static final String EXTRA_ITEM_STATUS = "android.media.intent.extra.ITEM_STATUS";
+ public static final String EXTRA_ITEM_STATUS_UPDATE_RECEIVER = "android.media.intent.extra.ITEM_STATUS_UPDATE_RECEIVER";
+ public static final String EXTRA_SESSION_ID = "android.media.intent.extra.SESSION_ID";
+ public static final String EXTRA_SESSION_STATUS = "android.media.intent.extra.SESSION_STATUS";
+ public static final String EXTRA_SESSION_STATUS_UPDATE_RECEIVER = "android.media.intent.extra.SESSION_STATUS_UPDATE_RECEIVER";
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaItemMetadata.java b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaItemMetadata.java
new file mode 100644
index 0000000..986c9af
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaItemMetadata.java
@@ -0,0 +1,26 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v7.media;
+
+
+public final class MediaItemMetadata
+{
+
+ private MediaItemMetadata()
+ {
+ }
+
+ public static final String KEY_ALBUM_ARTIST = "android.media.metadata.ALBUM_ARTIST";
+ public static final String KEY_ALBUM_TITLE = "android.media.metadata.ALBUM_TITLE";
+ public static final String KEY_ARTIST = "android.media.metadata.ARTIST";
+ public static final String KEY_ARTWORK_URI = "android.media.metadata.ARTWORK_URI";
+ public static final String KEY_AUTHOR = "android.media.metadata.AUTHOR";
+ public static final String KEY_COMPOSER = "android.media.metadata.COMPOSER";
+ public static final String KEY_DISC_NUMBER = "android.media.metadata.DISC_NUMBER";
+ public static final String KEY_DURATION = "android.media.metadata.DURATION";
+ public static final String KEY_TITLE = "android.media.metadata.TITLE";
+ public static final String KEY_TRACK_NUMBER = "android.media.metadata.TRACK_NUMBER";
+ public static final String KEY_YEAR = "android.media.metadata.YEAR";
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaItemStatus.java b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaItemStatus.java
new file mode 100644
index 0000000..82d46ff
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaItemStatus.java
@@ -0,0 +1,196 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v7.media;
+
+import android.os.Bundle;
+import android.os.SystemClock;
+import android.support.v4.util.TimeUtils;
+
+public final class MediaItemStatus
+{
+ public static final class Builder
+ {
+
+ public MediaItemStatus build()
+ {
+ return new MediaItemStatus(mBundle);
+ }
+
+ public Builder setContentDuration(long l)
+ {
+ mBundle.putLong("contentDuration", l);
+ return this;
+ }
+
+ public Builder setContentPosition(long l)
+ {
+ mBundle.putLong("contentPosition", l);
+ return this;
+ }
+
+ public Builder setExtras(Bundle bundle)
+ {
+ mBundle.putBundle("extras", bundle);
+ return this;
+ }
+
+ public Builder setPlaybackState(int i)
+ {
+ mBundle.putInt("playbackState", i);
+ return this;
+ }
+
+ public Builder setTimestamp(long l)
+ {
+ mBundle.putLong("timestamp", l);
+ return this;
+ }
+
+ private final Bundle mBundle;
+
+ public Builder(int i)
+ {
+ mBundle = new Bundle();
+ setTimestamp(SystemClock.elapsedRealtime());
+ setPlaybackState(i);
+ }
+
+ public Builder(MediaItemStatus mediaitemstatus)
+ {
+ if(mediaitemstatus == null)
+ {
+ throw new IllegalArgumentException("status must not be null");
+ } else
+ {
+ mBundle = new Bundle(mediaitemstatus.mBundle);
+ return;
+ }
+ }
+ }
+
+
+ private MediaItemStatus(Bundle bundle)
+ {
+ mBundle = bundle;
+ }
+
+
+ public static MediaItemStatus fromBundle(Bundle bundle)
+ {
+ MediaItemStatus mediaitemstatus;
+ if(bundle != null)
+ mediaitemstatus = new MediaItemStatus(bundle);
+ else
+ mediaitemstatus = null;
+ return mediaitemstatus;
+ }
+
+ private static String playbackStateToString(int i)
+ {
+ i;
+ JVM INSTR tableswitch 0 7: default 48
+ // 0 55
+ // 1 67
+ // 2 73
+ // 3 61
+ // 4 79
+ // 5 85
+ // 6 91
+ // 7 97;
+ goto _L1 _L2 _L3 _L4 _L5 _L6 _L7 _L8 _L9
+_L1:
+ String s = Integer.toString(i);
+_L11:
+ return s;
+_L2:
+ s = "pending";
+ continue; /* Loop/switch isn't completed */
+_L5:
+ s = "buffering";
+ continue; /* Loop/switch isn't completed */
+_L3:
+ s = "playing";
+ continue; /* Loop/switch isn't completed */
+_L4:
+ s = "paused";
+ continue; /* Loop/switch isn't completed */
+_L6:
+ s = "finished";
+ continue; /* Loop/switch isn't completed */
+_L7:
+ s = "canceled";
+ continue; /* Loop/switch isn't completed */
+_L8:
+ s = "invalidated";
+ continue; /* Loop/switch isn't completed */
+_L9:
+ s = "error";
+ if(true) goto _L11; else goto _L10
+_L10:
+ }
+
+ public Bundle asBundle()
+ {
+ return mBundle;
+ }
+
+ public long getContentDuration()
+ {
+ return mBundle.getLong("contentDuration", -1L);
+ }
+
+ public long getContentPosition()
+ {
+ return mBundle.getLong("contentPosition", -1L);
+ }
+
+ public Bundle getExtras()
+ {
+ return mBundle.getBundle("extras");
+ }
+
+ public int getPlaybackState()
+ {
+ return mBundle.getInt("playbackState", 7);
+ }
+
+ public long getTimestamp()
+ {
+ return mBundle.getLong("timestamp");
+ }
+
+ public String toString()
+ {
+ StringBuilder stringbuilder = new StringBuilder();
+ stringbuilder.append("MediaItemStatus{ ");
+ stringbuilder.append("timestamp=");
+ TimeUtils.formatDuration(SystemClock.elapsedRealtime() - getTimestamp(), stringbuilder);
+ stringbuilder.append(" ms ago");
+ stringbuilder.append(", playbackState=").append(playbackStateToString(getPlaybackState()));
+ stringbuilder.append(", contentPosition=").append(getContentPosition());
+ stringbuilder.append(", contentDuration=").append(getContentDuration());
+ stringbuilder.append(", extras=").append(getExtras());
+ stringbuilder.append(" }");
+ return stringbuilder.toString();
+ }
+
+ public static final String EXTRA_HTTP_RESPONSE_HEADERS = "android.media.status.extra.HTTP_RESPONSE_HEADERS";
+ public static final String EXTRA_HTTP_STATUS_CODE = "android.media.status.extra.HTTP_STATUS_CODE";
+ private static final String KEY_CONTENT_DURATION = "contentDuration";
+ private static final String KEY_CONTENT_POSITION = "contentPosition";
+ private static final String KEY_EXTRAS = "extras";
+ private static final String KEY_PLAYBACK_STATE = "playbackState";
+ private static final String KEY_TIMESTAMP = "timestamp";
+ public static final int PLAYBACK_STATE_BUFFERING = 3;
+ public static final int PLAYBACK_STATE_CANCELED = 5;
+ public static final int PLAYBACK_STATE_ERROR = 7;
+ public static final int PLAYBACK_STATE_FINISHED = 4;
+ public static final int PLAYBACK_STATE_INVALIDATED = 6;
+ public static final int PLAYBACK_STATE_PAUSED = 2;
+ public static final int PLAYBACK_STATE_PENDING = 0;
+ public static final int PLAYBACK_STATE_PLAYING = 1;
+ private final Bundle mBundle;
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouteDescriptor.java b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouteDescriptor.java
new file mode 100644
index 0000000..54a28e7
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouteDescriptor.java
@@ -0,0 +1,289 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v7.media;
+
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.text.TextUtils;
+import java.util.*;
+
+public final class MediaRouteDescriptor
+{
+ public static final class Builder
+ {
+
+ public Builder addControlFilter(IntentFilter intentfilter)
+ {
+ if(intentfilter == null)
+ throw new IllegalArgumentException("filter must not be null");
+ if(mControlFilters == null)
+ mControlFilters = new ArrayList();
+ if(!mControlFilters.contains(intentfilter))
+ mControlFilters.add(intentfilter);
+ return this;
+ }
+
+ public Builder addControlFilters(Collection collection)
+ {
+ if(collection == null)
+ throw new IllegalArgumentException("filters must not be null");
+ if(!collection.isEmpty())
+ {
+ for(Iterator iterator = collection.iterator(); iterator.hasNext(); addControlFilter((IntentFilter)iterator.next()));
+ }
+ return this;
+ }
+
+ public MediaRouteDescriptor build()
+ {
+ if(mControlFilters != null)
+ mBundle.putParcelableArrayList("controlFilters", mControlFilters);
+ return new MediaRouteDescriptor(mBundle, mControlFilters);
+ }
+
+ public Builder setConnecting(boolean flag)
+ {
+ mBundle.putBoolean("connecting", flag);
+ return this;
+ }
+
+ public Builder setDescription(String s)
+ {
+ mBundle.putString("status", s);
+ return this;
+ }
+
+ public Builder setEnabled(boolean flag)
+ {
+ mBundle.putBoolean("enabled", flag);
+ return this;
+ }
+
+ public Builder setExtras(Bundle bundle)
+ {
+ mBundle.putBundle("extras", bundle);
+ return this;
+ }
+
+ public Builder setId(String s)
+ {
+ mBundle.putString("id", s);
+ return this;
+ }
+
+ public Builder setName(String s)
+ {
+ mBundle.putString("name", s);
+ return this;
+ }
+
+ public Builder setPlaybackStream(int i)
+ {
+ mBundle.putInt("playbackStream", i);
+ return this;
+ }
+
+ public Builder setPlaybackType(int i)
+ {
+ mBundle.putInt("playbackType", i);
+ return this;
+ }
+
+ public Builder setPresentationDisplayId(int i)
+ {
+ mBundle.putInt("presentationDisplayId", i);
+ return this;
+ }
+
+ public Builder setVolume(int i)
+ {
+ mBundle.putInt("volume", i);
+ return this;
+ }
+
+ public Builder setVolumeHandling(int i)
+ {
+ mBundle.putInt("volumeHandling", i);
+ return this;
+ }
+
+ public Builder setVolumeMax(int i)
+ {
+ mBundle.putInt("volumeMax", i);
+ return this;
+ }
+
+ private final Bundle mBundle;
+ private ArrayList mControlFilters;
+
+ public Builder(MediaRouteDescriptor mediaroutedescriptor)
+ {
+ if(mediaroutedescriptor == null)
+ throw new IllegalArgumentException("descriptor must not be null");
+ mBundle = new Bundle(mediaroutedescriptor.mBundle);
+ mediaroutedescriptor.ensureControlFilters();
+ if(!mediaroutedescriptor.mControlFilters.isEmpty())
+ mControlFilters = new ArrayList(mediaroutedescriptor.mControlFilters);
+ }
+
+ public Builder(String s, String s1)
+ {
+ mBundle = new Bundle();
+ setId(s);
+ setName(s1);
+ }
+ }
+
+
+ private MediaRouteDescriptor(Bundle bundle, List list)
+ {
+ mBundle = bundle;
+ mControlFilters = list;
+ }
+
+
+ private void ensureControlFilters()
+ {
+ if(mControlFilters == null)
+ {
+ mControlFilters = mBundle.getParcelableArrayList("controlFilters");
+ if(mControlFilters == null)
+ mControlFilters = Collections.emptyList();
+ }
+ }
+
+ public static MediaRouteDescriptor fromBundle(Bundle bundle)
+ {
+ MediaRouteDescriptor mediaroutedescriptor;
+ if(bundle != null)
+ mediaroutedescriptor = new MediaRouteDescriptor(bundle, null);
+ else
+ mediaroutedescriptor = null;
+ return mediaroutedescriptor;
+ }
+
+ public Bundle asBundle()
+ {
+ return mBundle;
+ }
+
+ public List getControlFilters()
+ {
+ ensureControlFilters();
+ return mControlFilters;
+ }
+
+ public String getDescription()
+ {
+ return mBundle.getString("status");
+ }
+
+ public Bundle getExtras()
+ {
+ return mBundle.getBundle("extras");
+ }
+
+ public String getId()
+ {
+ return mBundle.getString("id");
+ }
+
+ public String getName()
+ {
+ return mBundle.getString("name");
+ }
+
+ public int getPlaybackStream()
+ {
+ return mBundle.getInt("playbackStream", -1);
+ }
+
+ public int getPlaybackType()
+ {
+ return mBundle.getInt("playbackType", 1);
+ }
+
+ public int getPresentationDisplayId()
+ {
+ return mBundle.getInt("presentationDisplayId", -1);
+ }
+
+ public int getVolume()
+ {
+ return mBundle.getInt("volume");
+ }
+
+ public int getVolumeHandling()
+ {
+ return mBundle.getInt("volumeHandling", 0);
+ }
+
+ public int getVolumeMax()
+ {
+ return mBundle.getInt("volumeMax");
+ }
+
+ public boolean isConnecting()
+ {
+ return mBundle.getBoolean("connecting", false);
+ }
+
+ public boolean isEnabled()
+ {
+ return mBundle.getBoolean("enabled", true);
+ }
+
+ public boolean isValid()
+ {
+ ensureControlFilters();
+ boolean flag;
+ if(TextUtils.isEmpty(getId()) || TextUtils.isEmpty(getName()) || mControlFilters.contains(null))
+ flag = false;
+ else
+ flag = true;
+ return flag;
+ }
+
+ public String toString()
+ {
+ StringBuilder stringbuilder = new StringBuilder();
+ stringbuilder.append("MediaRouteDescriptor{ ");
+ stringbuilder.append("id=").append(getId());
+ stringbuilder.append(", name=").append(getName());
+ stringbuilder.append(", description=").append(getDescription());
+ stringbuilder.append(", isEnabled=").append(isEnabled());
+ stringbuilder.append(", isConnecting=").append(isConnecting());
+ stringbuilder.append(", controlFilters=").append(Arrays.toString(getControlFilters().toArray()));
+ stringbuilder.append(", playbackType=").append(getPlaybackType());
+ stringbuilder.append(", playbackStream=").append(getPlaybackStream());
+ stringbuilder.append(", volume=").append(getVolume());
+ stringbuilder.append(", volumeMax=").append(getVolumeMax());
+ stringbuilder.append(", volumeHandling=").append(getVolumeHandling());
+ stringbuilder.append(", presentationDisplayId=").append(getPresentationDisplayId());
+ stringbuilder.append(", extras=").append(getExtras());
+ stringbuilder.append(", isValid=").append(isValid());
+ stringbuilder.append(" }");
+ return stringbuilder.toString();
+ }
+
+ private static final String KEY_CONNECTING = "connecting";
+ private static final String KEY_CONTROL_FILTERS = "controlFilters";
+ private static final String KEY_DESCRIPTION = "status";
+ private static final String KEY_ENABLED = "enabled";
+ private static final String KEY_EXTRAS = "extras";
+ private static final String KEY_ID = "id";
+ private static final String KEY_NAME = "name";
+ private static final String KEY_PLAYBACK_STREAM = "playbackStream";
+ private static final String KEY_PLAYBACK_TYPE = "playbackType";
+ private static final String KEY_PRESENTATION_DISPLAY_ID = "presentationDisplayId";
+ private static final String KEY_VOLUME = "volume";
+ private static final String KEY_VOLUME_HANDLING = "volumeHandling";
+ private static final String KEY_VOLUME_MAX = "volumeMax";
+ private final Bundle mBundle;
+ private List mControlFilters;
+
+
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouteDiscoveryRequest.java b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouteDiscoveryRequest.java
new file mode 100644
index 0000000..273f3f4
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouteDiscoveryRequest.java
@@ -0,0 +1,114 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v7.media;
+
+import android.os.Bundle;
+
+// Referenced classes of package android.support.v7.media:
+// MediaRouteSelector
+
+public final class MediaRouteDiscoveryRequest
+{
+
+ private MediaRouteDiscoveryRequest(Bundle bundle)
+ {
+ mBundle = bundle;
+ }
+
+ public MediaRouteDiscoveryRequest(MediaRouteSelector mediarouteselector, boolean flag)
+ {
+ if(mediarouteselector == null)
+ {
+ throw new IllegalArgumentException("selector must not be null");
+ } else
+ {
+ mBundle = new Bundle();
+ mSelector = mediarouteselector;
+ mBundle.putBundle("selector", mediarouteselector.asBundle());
+ mBundle.putBoolean("activeScan", flag);
+ return;
+ }
+ }
+
+ private void ensureSelector()
+ {
+ if(mSelector == null)
+ {
+ mSelector = MediaRouteSelector.fromBundle(mBundle.getBundle("selector"));
+ if(mSelector == null)
+ mSelector = MediaRouteSelector.EMPTY;
+ }
+ }
+
+ public static MediaRouteDiscoveryRequest fromBundle(Bundle bundle)
+ {
+ MediaRouteDiscoveryRequest mediaroutediscoveryrequest;
+ if(bundle != null)
+ mediaroutediscoveryrequest = new MediaRouteDiscoveryRequest(bundle);
+ else
+ mediaroutediscoveryrequest = null;
+ return mediaroutediscoveryrequest;
+ }
+
+ public Bundle asBundle()
+ {
+ return mBundle;
+ }
+
+ public boolean equals(Object obj)
+ {
+ boolean flag = false;
+ if(obj instanceof MediaRouteDiscoveryRequest)
+ {
+ MediaRouteDiscoveryRequest mediaroutediscoveryrequest = (MediaRouteDiscoveryRequest)obj;
+ if(getSelector().equals(mediaroutediscoveryrequest.getSelector()) && isActiveScan() == mediaroutediscoveryrequest.isActiveScan())
+ flag = true;
+ }
+ return flag;
+ }
+
+ public MediaRouteSelector getSelector()
+ {
+ ensureSelector();
+ return mSelector;
+ }
+
+ public int hashCode()
+ {
+ int i = getSelector().hashCode();
+ boolean flag;
+ if(isActiveScan())
+ flag = true;
+ else
+ flag = false;
+ return flag ^ i;
+ }
+
+ public boolean isActiveScan()
+ {
+ return mBundle.getBoolean("activeScan");
+ }
+
+ public boolean isValid()
+ {
+ ensureSelector();
+ return mSelector.isValid();
+ }
+
+ public String toString()
+ {
+ StringBuilder stringbuilder = new StringBuilder();
+ stringbuilder.append("DiscoveryRequest{ selector=").append(getSelector());
+ stringbuilder.append(", activeScan=").append(isActiveScan());
+ stringbuilder.append(", isValid=").append(isValid());
+ stringbuilder.append(" }");
+ return stringbuilder.toString();
+ }
+
+ private static final String KEY_ACTIVE_SCAN = "activeScan";
+ private static final String KEY_SELECTOR = "selector";
+ private final Bundle mBundle;
+ private MediaRouteSelector mSelector;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouteProvider.java b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouteProvider.java
new file mode 100644
index 0000000..555ba02
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouteProvider.java
@@ -0,0 +1,239 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v7.media;
+
+import android.content.*;
+import android.os.Handler;
+import android.os.Message;
+
+// Referenced classes of package android.support.v7.media:
+// MediaRouter, MediaRouteDiscoveryRequest, MediaRouteProviderDescriptor
+
+public abstract class MediaRouteProvider
+{
+ private final class ProviderHandler extends Handler
+ {
+
+ public void handleMessage(Message message)
+ {
+ message.what;
+ JVM INSTR tableswitch 1 2: default 28
+ // 1 29
+ // 2 39;
+ goto _L1 _L2 _L3
+_L1:
+ return;
+_L2:
+ deliverDescriptorChanged();
+ continue; /* Loop/switch isn't completed */
+_L3:
+ deliverDiscoveryRequestChanged();
+ if(true) goto _L1; else goto _L4
+_L4:
+ }
+
+ final MediaRouteProvider this$0;
+
+ private ProviderHandler()
+ {
+ this$0 = MediaRouteProvider.this;
+ super();
+ }
+
+ }
+
+ public static abstract class Callback
+ {
+
+ public void onDescriptorChanged(MediaRouteProvider mediarouteprovider, MediaRouteProviderDescriptor mediarouteproviderdescriptor)
+ {
+ }
+
+ public Callback()
+ {
+ }
+ }
+
+ public static abstract class RouteController
+ {
+
+ public boolean onControlRequest(Intent intent, MediaRouter.ControlRequestCallback controlrequestcallback)
+ {
+ return false;
+ }
+
+ public void onRelease()
+ {
+ }
+
+ public void onSelect()
+ {
+ }
+
+ public void onSetVolume(int i)
+ {
+ }
+
+ public void onUnselect()
+ {
+ }
+
+ public void onUpdateVolume(int i)
+ {
+ }
+
+ public RouteController()
+ {
+ }
+ }
+
+ public static final class ProviderMetadata
+ {
+
+ public ComponentName getComponentName()
+ {
+ return mComponentName;
+ }
+
+ public String getPackageName()
+ {
+ return mComponentName.getPackageName();
+ }
+
+ public String toString()
+ {
+ return (new StringBuilder()).append("ProviderMetadata{ componentName=").append(mComponentName.flattenToShortString()).append(" }").toString();
+ }
+
+ private final ComponentName mComponentName;
+
+ ProviderMetadata(ComponentName componentname)
+ {
+ if(componentname == null)
+ {
+ throw new IllegalArgumentException("componentName must not be null");
+ } else
+ {
+ mComponentName = componentname;
+ return;
+ }
+ }
+ }
+
+
+ public MediaRouteProvider(Context context)
+ {
+ this(context, null);
+ }
+
+ MediaRouteProvider(Context context, ProviderMetadata providermetadata)
+ {
+ mHandler = new ProviderHandler();
+ if(context == null)
+ throw new IllegalArgumentException("context must not be null");
+ mContext = context;
+ if(providermetadata == null)
+ mMetadata = new ProviderMetadata(new ComponentName(context, getClass()));
+ else
+ mMetadata = providermetadata;
+ }
+
+ private void deliverDescriptorChanged()
+ {
+ mPendingDescriptorChange = false;
+ if(mCallback != null)
+ mCallback.onDescriptorChanged(this, mDescriptor);
+ }
+
+ private void deliverDiscoveryRequestChanged()
+ {
+ mPendingDiscoveryRequestChange = false;
+ onDiscoveryRequestChanged(mDiscoveryRequest);
+ }
+
+ public final Context getContext()
+ {
+ return mContext;
+ }
+
+ public final MediaRouteProviderDescriptor getDescriptor()
+ {
+ return mDescriptor;
+ }
+
+ public final MediaRouteDiscoveryRequest getDiscoveryRequest()
+ {
+ return mDiscoveryRequest;
+ }
+
+ public final Handler getHandler()
+ {
+ return mHandler;
+ }
+
+ public final ProviderMetadata getMetadata()
+ {
+ return mMetadata;
+ }
+
+ public RouteController onCreateRouteController(String s)
+ {
+ return null;
+ }
+
+ public void onDiscoveryRequestChanged(MediaRouteDiscoveryRequest mediaroutediscoveryrequest)
+ {
+ }
+
+ public final void setCallback(Callback callback)
+ {
+ MediaRouter.checkCallingThread();
+ mCallback = callback;
+ }
+
+ public final void setDescriptor(MediaRouteProviderDescriptor mediarouteproviderdescriptor)
+ {
+ MediaRouter.checkCallingThread();
+ if(mDescriptor != mediarouteproviderdescriptor)
+ {
+ mDescriptor = mediarouteproviderdescriptor;
+ if(!mPendingDescriptorChange)
+ {
+ mPendingDescriptorChange = true;
+ mHandler.sendEmptyMessage(1);
+ }
+ }
+ }
+
+ public final void setDiscoveryRequest(MediaRouteDiscoveryRequest mediaroutediscoveryrequest)
+ {
+ MediaRouter.checkCallingThread();
+ if(mDiscoveryRequest != mediaroutediscoveryrequest && (mDiscoveryRequest == null || !mDiscoveryRequest.equals(mediaroutediscoveryrequest))) goto _L2; else goto _L1
+_L1:
+ return;
+_L2:
+ mDiscoveryRequest = mediaroutediscoveryrequest;
+ if(!mPendingDiscoveryRequestChange)
+ {
+ mPendingDiscoveryRequestChange = true;
+ mHandler.sendEmptyMessage(2);
+ }
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ private static final int MSG_DELIVER_DESCRIPTOR_CHANGED = 1;
+ private static final int MSG_DELIVER_DISCOVERY_REQUEST_CHANGED = 2;
+ private Callback mCallback;
+ private final Context mContext;
+ private MediaRouteProviderDescriptor mDescriptor;
+ private MediaRouteDiscoveryRequest mDiscoveryRequest;
+ private final ProviderHandler mHandler;
+ private final ProviderMetadata mMetadata;
+ private boolean mPendingDescriptorChange;
+ private boolean mPendingDiscoveryRequestChange;
+
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouteProviderDescriptor.java b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouteProviderDescriptor.java
new file mode 100644
index 0000000..2456f39
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouteProviderDescriptor.java
@@ -0,0 +1,166 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v7.media;
+
+import android.os.Bundle;
+import java.util.*;
+
+// Referenced classes of package android.support.v7.media:
+// MediaRouteDescriptor
+
+public final class MediaRouteProviderDescriptor
+{
+ public static final class Builder
+ {
+
+ public Builder addRoute(MediaRouteDescriptor mediaroutedescriptor)
+ {
+ if(mediaroutedescriptor == null)
+ throw new IllegalArgumentException("route must not be null");
+ if(mRoutes == null)
+ mRoutes = new ArrayList();
+ else
+ if(mRoutes.contains(mediaroutedescriptor))
+ throw new IllegalArgumentException("route descriptor already added");
+ mRoutes.add(mediaroutedescriptor);
+ return this;
+ }
+
+ public Builder addRoutes(Collection collection)
+ {
+ if(collection == null)
+ throw new IllegalArgumentException("routes must not be null");
+ if(!collection.isEmpty())
+ {
+ for(Iterator iterator = collection.iterator(); iterator.hasNext(); addRoute((MediaRouteDescriptor)iterator.next()));
+ }
+ return this;
+ }
+
+ public MediaRouteProviderDescriptor build()
+ {
+ if(mRoutes != null)
+ {
+ int i = mRoutes.size();
+ ArrayList arraylist = new ArrayList(i);
+ for(int j = 0; j < i; j++)
+ arraylist.add(((MediaRouteDescriptor)mRoutes.get(j)).asBundle());
+
+ mBundle.putParcelableArrayList("routes", arraylist);
+ }
+ return new MediaRouteProviderDescriptor(mBundle, mRoutes);
+ }
+
+ private final Bundle mBundle;
+ private ArrayList mRoutes;
+
+ public Builder()
+ {
+ mBundle = new Bundle();
+ }
+
+ public Builder(MediaRouteProviderDescriptor mediarouteproviderdescriptor)
+ {
+ if(mediarouteproviderdescriptor == null)
+ throw new IllegalArgumentException("descriptor must not be null");
+ mBundle = new Bundle(mediarouteproviderdescriptor.mBundle);
+ mediarouteproviderdescriptor.ensureRoutes();
+ if(!mediarouteproviderdescriptor.mRoutes.isEmpty())
+ mRoutes = new ArrayList(mediarouteproviderdescriptor.mRoutes);
+ }
+ }
+
+
+ private MediaRouteProviderDescriptor(Bundle bundle, List list)
+ {
+ mBundle = bundle;
+ mRoutes = list;
+ }
+
+
+ private void ensureRoutes()
+ {
+ if(mRoutes == null)
+ {
+ ArrayList arraylist = mBundle.getParcelableArrayList("routes");
+ if(arraylist == null || arraylist.isEmpty())
+ {
+ mRoutes = Collections.emptyList();
+ } else
+ {
+ int i = arraylist.size();
+ mRoutes = new ArrayList(i);
+ int j = 0;
+ while(j < i)
+ {
+ mRoutes.add(MediaRouteDescriptor.fromBundle((Bundle)arraylist.get(j)));
+ j++;
+ }
+ }
+ }
+ }
+
+ public static MediaRouteProviderDescriptor fromBundle(Bundle bundle)
+ {
+ MediaRouteProviderDescriptor mediarouteproviderdescriptor;
+ if(bundle != null)
+ mediarouteproviderdescriptor = new MediaRouteProviderDescriptor(bundle, null);
+ else
+ mediarouteproviderdescriptor = null;
+ return mediarouteproviderdescriptor;
+ }
+
+ public Bundle asBundle()
+ {
+ return mBundle;
+ }
+
+ public List getRoutes()
+ {
+ ensureRoutes();
+ return mRoutes;
+ }
+
+ public boolean isValid()
+ {
+ int i;
+ int j;
+ ensureRoutes();
+ i = mRoutes.size();
+ j = 0;
+_L3:
+ MediaRouteDescriptor mediaroutedescriptor;
+ if(j >= i)
+ break MISSING_BLOCK_LABEL_59;
+ mediaroutedescriptor = (MediaRouteDescriptor)mRoutes.get(j);
+ if(mediaroutedescriptor != null && mediaroutedescriptor.isValid()) goto _L2; else goto _L1
+_L1:
+ boolean flag = false;
+_L4:
+ return flag;
+_L2:
+ j++;
+ goto _L3
+ flag = true;
+ goto _L4
+ }
+
+ public String toString()
+ {
+ StringBuilder stringbuilder = new StringBuilder();
+ stringbuilder.append("MediaRouteProviderDescriptor{ ");
+ stringbuilder.append("routes=").append(Arrays.toString(getRoutes().toArray()));
+ stringbuilder.append(", isValid=").append(isValid());
+ stringbuilder.append(" }");
+ return stringbuilder.toString();
+ }
+
+ private static final String KEY_ROUTES = "routes";
+ private final Bundle mBundle;
+ private List mRoutes;
+
+
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouteProviderProtocol.java b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouteProviderProtocol.java
new file mode 100644
index 0000000..64b1b7d
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouteProviderProtocol.java
@@ -0,0 +1,57 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v7.media;
+
+import android.os.Messenger;
+
+abstract class MediaRouteProviderProtocol
+{
+
+ MediaRouteProviderProtocol()
+ {
+ }
+
+ public static boolean isValidRemoteMessenger(Messenger messenger)
+ {
+ boolean flag;
+ flag = false;
+ if(messenger == null)
+ break MISSING_BLOCK_LABEL_17;
+ android.os.IBinder ibinder = messenger.getBinder();
+ if(ibinder != null)
+ flag = true;
+_L2:
+ return flag;
+ NullPointerException nullpointerexception;
+ nullpointerexception;
+ if(true) goto _L2; else goto _L1
+_L1:
+ }
+
+ public static final String CLIENT_DATA_ROUTE_ID = "routeId";
+ public static final String CLIENT_DATA_VOLUME = "volume";
+ public static final int CLIENT_MSG_CREATE_ROUTE_CONTROLLER = 3;
+ public static final int CLIENT_MSG_REGISTER = 1;
+ public static final int CLIENT_MSG_RELEASE_ROUTE_CONTROLLER = 4;
+ public static final int CLIENT_MSG_ROUTE_CONTROL_REQUEST = 9;
+ public static final int CLIENT_MSG_SELECT_ROUTE = 5;
+ public static final int CLIENT_MSG_SET_DISCOVERY_REQUEST = 10;
+ public static final int CLIENT_MSG_SET_ROUTE_VOLUME = 7;
+ public static final int CLIENT_MSG_UNREGISTER = 2;
+ public static final int CLIENT_MSG_UNSELECT_ROUTE = 6;
+ public static final int CLIENT_MSG_UPDATE_ROUTE_VOLUME = 8;
+ public static final int CLIENT_VERSION_1 = 1;
+ public static final int CLIENT_VERSION_CURRENT = 1;
+ public static final String SERVICE_DATA_ERROR = "error";
+ public static final String SERVICE_INTERFACE = "android.media.MediaRouteProviderService";
+ public static final int SERVICE_MSG_CONTROL_REQUEST_FAILED = 4;
+ public static final int SERVICE_MSG_CONTROL_REQUEST_SUCCEEDED = 3;
+ public static final int SERVICE_MSG_DESCRIPTOR_CHANGED = 5;
+ public static final int SERVICE_MSG_GENERIC_FAILURE = 0;
+ public static final int SERVICE_MSG_GENERIC_SUCCESS = 1;
+ public static final int SERVICE_MSG_REGISTERED = 2;
+ public static final int SERVICE_VERSION_1 = 1;
+ public static final int SERVICE_VERSION_CURRENT = 1;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouteProviderService.java b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouteProviderService.java
new file mode 100644
index 0000000..554fa11
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouteProviderService.java
@@ -0,0 +1,758 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v7.media;
+
+import android.app.Service;
+import android.content.Intent;
+import android.os.*;
+import android.util.Log;
+import android.util.SparseArray;
+import java.lang.ref.WeakReference;
+import java.util.ArrayList;
+
+// Referenced classes of package android.support.v7.media:
+// MediaRouteProvider, MediaRouteProviderDescriptor, MediaRouteDiscoveryRequest, MediaRouteSelector,
+// MediaRouteProviderProtocol
+
+public abstract class MediaRouteProviderService extends Service
+{
+ private static final class ReceiveHandler extends Handler
+ {
+
+ private boolean processMessage(int i, Messenger messenger, int j, int k, Object obj, Bundle bundle)
+ {
+ boolean flag;
+ MediaRouteProviderService mediarouteproviderservice;
+ flag = false;
+ mediarouteproviderservice = (MediaRouteProviderService)mServiceRef.get();
+ if(mediarouteproviderservice == null) goto _L2; else goto _L1
+_L1:
+ i;
+ JVM INSTR tableswitch 1 10: default 76
+ // 1 79
+ // 2 93
+ // 3 105
+ // 4 135
+ // 5 149
+ // 6 163
+ // 7 177
+ // 8 209
+ // 9 240
+ // 10 267;
+ goto _L2 _L3 _L4 _L5 _L6 _L7 _L8 _L9 _L10 _L11 _L12
+_L2:
+ return flag;
+_L3:
+ flag = mediarouteproviderservice.onRegisterClient(messenger, j, k);
+ continue; /* Loop/switch isn't completed */
+_L4:
+ flag = mediarouteproviderservice.onUnregisterClient(messenger, j);
+ continue; /* Loop/switch isn't completed */
+_L5:
+ String s = bundle.getString("routeId");
+ if(s != null)
+ flag = mediarouteproviderservice.onCreateRouteController(messenger, j, k, s);
+ continue; /* Loop/switch isn't completed */
+_L6:
+ flag = mediarouteproviderservice.onReleaseRouteController(messenger, j, k);
+ continue; /* Loop/switch isn't completed */
+_L7:
+ flag = mediarouteproviderservice.onSelectRoute(messenger, j, k);
+ continue; /* Loop/switch isn't completed */
+_L8:
+ flag = mediarouteproviderservice.onUnselectRoute(messenger, j, k);
+ continue; /* Loop/switch isn't completed */
+_L9:
+ int i1 = bundle.getInt("volume", -1);
+ if(i1 >= 0)
+ flag = mediarouteproviderservice.onSetRouteVolume(messenger, j, k, i1);
+ continue; /* Loop/switch isn't completed */
+_L10:
+ int l = bundle.getInt("volume", 0);
+ if(l != 0)
+ flag = mediarouteproviderservice.onUpdateRouteVolume(messenger, j, k, l);
+ continue; /* Loop/switch isn't completed */
+_L11:
+ if(obj instanceof Intent)
+ flag = mediarouteproviderservice.onRouteControlRequest(messenger, j, k, (Intent)obj);
+ continue; /* Loop/switch isn't completed */
+_L12:
+ if(obj == null || (obj instanceof Bundle))
+ {
+ MediaRouteDiscoveryRequest mediaroutediscoveryrequest = MediaRouteDiscoveryRequest.fromBundle((Bundle)obj);
+ if(mediaroutediscoveryrequest == null || !mediaroutediscoveryrequest.isValid())
+ mediaroutediscoveryrequest = null;
+ flag = mediarouteproviderservice.onSetDiscoveryRequest(messenger, j, mediaroutediscoveryrequest);
+ }
+ if(true) goto _L2; else goto _L13
+_L13:
+ }
+
+ public void handleMessage(Message message)
+ {
+ Messenger messenger = message.replyTo;
+ if(!MediaRouteProviderProtocol.isValidRemoteMessenger(messenger)) goto _L2; else goto _L1
+_L1:
+ int i = message.what;
+ int j = message.arg1;
+ int k = message.arg2;
+ Object obj = message.obj;
+ Bundle bundle = message.peekData();
+ if(!processMessage(i, messenger, j, k, obj, bundle))
+ {
+ if(MediaRouteProviderService.DEBUG)
+ Log.d("MediaRouteProviderSrv", (new StringBuilder()).append(MediaRouteProviderService.getClientId(messenger)).append(": Message failed, what=").append(i).append(", requestId=").append(j).append(", arg=").append(k).append(", obj=").append(obj).append(", data=").append(bundle).toString());
+ MediaRouteProviderService.sendGenericFailure(messenger, j);
+ }
+_L4:
+ return;
+_L2:
+ if(MediaRouteProviderService.DEBUG)
+ Log.d("MediaRouteProviderSrv", "Ignoring message without valid reply messenger.");
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ private final WeakReference mServiceRef;
+
+ public ReceiveHandler(MediaRouteProviderService mediarouteproviderservice)
+ {
+ mServiceRef = new WeakReference(mediarouteproviderservice);
+ }
+ }
+
+ private final class ClientRecord
+ implements android.os.IBinder.DeathRecipient
+ {
+
+ public void binderDied()
+ {
+ mPrivateHandler.obtainMessage(1, mMessenger).sendToTarget();
+ }
+
+ public boolean createRouteController(String s, int i)
+ {
+ if(mControllers.indexOfKey(i) >= 0) goto _L2; else goto _L1
+_L1:
+ MediaRouteProvider.RouteController routecontroller = mProvider.onCreateRouteController(s);
+ if(routecontroller == null) goto _L2; else goto _L3
+_L3:
+ boolean flag;
+ mControllers.put(i, routecontroller);
+ flag = true;
+_L5:
+ return flag;
+_L2:
+ flag = false;
+ if(true) goto _L5; else goto _L4
+_L4:
+ }
+
+ public void dispose()
+ {
+ int i = mControllers.size();
+ for(int j = 0; j < i; j++)
+ ((MediaRouteProvider.RouteController)mControllers.valueAt(j)).onRelease();
+
+ mControllers.clear();
+ mMessenger.getBinder().unlinkToDeath(this, 0);
+ setDiscoveryRequest(null);
+ }
+
+ public MediaRouteProvider.RouteController getRouteController(int i)
+ {
+ return (MediaRouteProvider.RouteController)mControllers.get(i);
+ }
+
+ public boolean hasMessenger(Messenger messenger)
+ {
+ boolean flag;
+ if(mMessenger.getBinder() == messenger.getBinder())
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ public boolean register()
+ {
+ boolean flag = false;
+ mMessenger.getBinder().linkToDeath(this, 0);
+ flag = true;
+_L2:
+ return flag;
+ RemoteException remoteexception;
+ remoteexception;
+ binderDied();
+ if(true) goto _L2; else goto _L1
+_L1:
+ }
+
+ public boolean releaseRouteController(int i)
+ {
+ MediaRouteProvider.RouteController routecontroller = (MediaRouteProvider.RouteController)mControllers.get(i);
+ boolean flag;
+ if(routecontroller != null)
+ {
+ mControllers.remove(i);
+ routecontroller.onRelease();
+ flag = true;
+ } else
+ {
+ flag = false;
+ }
+ return flag;
+ }
+
+ public boolean setDiscoveryRequest(MediaRouteDiscoveryRequest mediaroutediscoveryrequest)
+ {
+ boolean flag;
+ if(mDiscoveryRequest != mediaroutediscoveryrequest && (mDiscoveryRequest == null || !mDiscoveryRequest.equals(mediaroutediscoveryrequest)))
+ {
+ mDiscoveryRequest = mediaroutediscoveryrequest;
+ flag = updateCompositeDiscoveryRequest();
+ } else
+ {
+ flag = false;
+ }
+ return flag;
+ }
+
+ public String toString()
+ {
+ return MediaRouteProviderService.getClientId(mMessenger);
+ }
+
+ private final SparseArray mControllers = new SparseArray();
+ public MediaRouteDiscoveryRequest mDiscoveryRequest;
+ public final Messenger mMessenger;
+ public final int mVersion;
+ final MediaRouteProviderService this$0;
+
+ public ClientRecord(Messenger messenger, int i)
+ {
+ this$0 = MediaRouteProviderService.this;
+ super();
+ mMessenger = messenger;
+ mVersion = i;
+ }
+ }
+
+ private final class ProviderCallback extends MediaRouteProvider.Callback
+ {
+
+ public void onDescriptorChanged(MediaRouteProvider mediarouteprovider, MediaRouteProviderDescriptor mediarouteproviderdescriptor)
+ {
+ sendDescriptorChanged(mediarouteproviderdescriptor);
+ }
+
+ final MediaRouteProviderService this$0;
+
+ private ProviderCallback()
+ {
+ this$0 = MediaRouteProviderService.this;
+ super();
+ }
+
+ }
+
+ private final class PrivateHandler extends Handler
+ {
+
+ public void handleMessage(Message message)
+ {
+ message.what;
+ JVM INSTR tableswitch 1 1: default 24
+ // 1 25;
+ goto _L1 _L2
+_L1:
+ return;
+_L2:
+ onBinderDied((Messenger)message.obj);
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ final MediaRouteProviderService this$0;
+
+ private PrivateHandler()
+ {
+ this$0 = MediaRouteProviderService.this;
+ super();
+ }
+
+ }
+
+
+ public MediaRouteProviderService()
+ {
+ mReceiveMessenger = new Messenger(mReceiveHandler);
+ }
+
+ private int findClient(Messenger messenger)
+ {
+ int i;
+ int j;
+ i = mClients.size();
+ j = 0;
+_L3:
+ if(j >= i)
+ break MISSING_BLOCK_LABEL_41;
+ if(!((ClientRecord)mClients.get(j)).hasMessenger(messenger)) goto _L2; else goto _L1
+_L1:
+ return j;
+_L2:
+ j++;
+ goto _L3
+ j = -1;
+ goto _L1
+ }
+
+ private ClientRecord getClient(Messenger messenger)
+ {
+ int i = findClient(messenger);
+ ClientRecord clientrecord;
+ if(i >= 0)
+ clientrecord = (ClientRecord)mClients.get(i);
+ else
+ clientrecord = null;
+ return clientrecord;
+ }
+
+ private static String getClientId(Messenger messenger)
+ {
+ return (new StringBuilder()).append("Client connection ").append(messenger.getBinder().toString()).toString();
+ }
+
+ private void onBinderDied(Messenger messenger)
+ {
+ int i = findClient(messenger);
+ if(i >= 0)
+ {
+ ClientRecord clientrecord = (ClientRecord)mClients.remove(i);
+ if(DEBUG)
+ Log.d("MediaRouteProviderSrv", (new StringBuilder()).append(clientrecord).append(": Binder died").toString());
+ clientrecord.dispose();
+ }
+ }
+
+ private boolean onCreateRouteController(Messenger messenger, int i, int j, String s)
+ {
+ ClientRecord clientrecord = getClient(messenger);
+ boolean flag;
+ if(clientrecord != null && clientrecord.createRouteController(s, j))
+ {
+ if(DEBUG)
+ Log.d("MediaRouteProviderSrv", (new StringBuilder()).append(clientrecord).append(": Route controller created").append(", controllerId=").append(j).append(", routeId=").append(s).toString());
+ sendGenericSuccess(messenger, i);
+ flag = true;
+ } else
+ {
+ flag = false;
+ }
+ return flag;
+ }
+
+ private boolean onRegisterClient(Messenger messenger, int i, int j)
+ {
+ boolean flag = true;
+ if(j < flag || findClient(messenger) >= 0) goto _L2; else goto _L1
+_L1:
+ ClientRecord clientrecord = new ClientRecord(messenger, j);
+ if(!clientrecord.register()) goto _L2; else goto _L3
+_L3:
+ mClients.add(clientrecord);
+ if(DEBUG)
+ Log.d("MediaRouteProviderSrv", (new StringBuilder()).append(clientrecord).append(": Registered, version=").append(j).toString());
+ if(i != 0)
+ {
+ MediaRouteProviderDescriptor mediarouteproviderdescriptor = mProvider.getDescriptor();
+ Bundle bundle;
+ if(mediarouteproviderdescriptor != null)
+ bundle = mediarouteproviderdescriptor.asBundle();
+ else
+ bundle = null;
+ sendReply(messenger, 2, i, flag, bundle, null);
+ }
+_L5:
+ return flag;
+_L2:
+ flag = false;
+ if(true) goto _L5; else goto _L4
+_L4:
+ }
+
+ private boolean onReleaseRouteController(Messenger messenger, int i, int j)
+ {
+ ClientRecord clientrecord = getClient(messenger);
+ boolean flag;
+ if(clientrecord != null && clientrecord.releaseRouteController(j))
+ {
+ if(DEBUG)
+ Log.d("MediaRouteProviderSrv", (new StringBuilder()).append(clientrecord).append(": Route controller released").append(", controllerId=").append(j).toString());
+ sendGenericSuccess(messenger, i);
+ flag = true;
+ } else
+ {
+ flag = false;
+ }
+ return flag;
+ }
+
+ private boolean onRouteControlRequest(final Messenger messenger, final int requestId, final int controllerId, final Intent intent)
+ {
+ final ClientRecord client = getClient(messenger);
+ if(client == null) goto _L2; else goto _L1
+_L1:
+ MediaRouteProvider.RouteController routecontroller = client.getRouteController(controllerId);
+ if(routecontroller == null) goto _L2; else goto _L3
+_L3:
+ MediaRouter.ControlRequestCallback controlrequestcallback;
+ controlrequestcallback = null;
+ if(requestId != 0)
+ controlrequestcallback = new MediaRouter.ControlRequestCallback() {
+
+ public void onError(String s, Bundle bundle)
+ {
+ if(MediaRouteProviderService.DEBUG)
+ Log.d("MediaRouteProviderSrv", (new StringBuilder()).append(client).append(": Route control request failed").append(", controllerId=").append(controllerId).append(", intent=").append(intent).append(", error=").append(s).append(", data=").append(bundle).toString());
+ if(findClient(messenger) >= 0)
+ if(s != null)
+ {
+ Bundle bundle1 = new Bundle();
+ bundle1.putString("error", s);
+ MediaRouteProviderService.sendReply(messenger, 4, requestId, 0, bundle, bundle1);
+ } else
+ {
+ MediaRouteProviderService.sendReply(messenger, 4, requestId, 0, bundle, null);
+ }
+ }
+
+ public void onResult(Bundle bundle)
+ {
+ if(MediaRouteProviderService.DEBUG)
+ Log.d("MediaRouteProviderSrv", (new StringBuilder()).append(client).append(": Route control request succeeded").append(", controllerId=").append(controllerId).append(", intent=").append(intent).append(", data=").append(bundle).toString());
+ if(findClient(messenger) >= 0)
+ MediaRouteProviderService.sendReply(messenger, 3, requestId, 0, bundle, null);
+ }
+
+ final MediaRouteProviderService this$0;
+ final ClientRecord val$client;
+ final int val$controllerId;
+ final Intent val$intent;
+ final Messenger val$messenger;
+ final int val$requestId;
+
+
+ {
+ this$0 = MediaRouteProviderService.this;
+ client = clientrecord;
+ controllerId = i;
+ intent = intent1;
+ messenger = messenger1;
+ requestId = j;
+ super();
+ }
+ }
+;
+ if(!routecontroller.onControlRequest(intent, controlrequestcallback)) goto _L2; else goto _L4
+_L4:
+ boolean flag;
+ if(DEBUG)
+ Log.d("MediaRouteProviderSrv", (new StringBuilder()).append(client).append(": Route control request delivered").append(", controllerId=").append(controllerId).append(", intent=").append(intent).toString());
+ flag = true;
+_L6:
+ return flag;
+_L2:
+ flag = false;
+ if(true) goto _L6; else goto _L5
+_L5:
+ }
+
+ private boolean onSelectRoute(Messenger messenger, int i, int j)
+ {
+ ClientRecord clientrecord = getClient(messenger);
+ if(clientrecord == null) goto _L2; else goto _L1
+_L1:
+ MediaRouteProvider.RouteController routecontroller = clientrecord.getRouteController(j);
+ if(routecontroller == null) goto _L2; else goto _L3
+_L3:
+ boolean flag;
+ routecontroller.onSelect();
+ if(DEBUG)
+ Log.d("MediaRouteProviderSrv", (new StringBuilder()).append(clientrecord).append(": Route selected").append(", controllerId=").append(j).toString());
+ sendGenericSuccess(messenger, i);
+ flag = true;
+_L5:
+ return flag;
+_L2:
+ flag = false;
+ if(true) goto _L5; else goto _L4
+_L4:
+ }
+
+ private boolean onSetDiscoveryRequest(Messenger messenger, int i, MediaRouteDiscoveryRequest mediaroutediscoveryrequest)
+ {
+ ClientRecord clientrecord = getClient(messenger);
+ boolean flag;
+ if(clientrecord != null)
+ {
+ boolean flag1 = clientrecord.setDiscoveryRequest(mediaroutediscoveryrequest);
+ if(DEBUG)
+ Log.d("MediaRouteProviderSrv", (new StringBuilder()).append(clientrecord).append(": Set discovery request, request=").append(mediaroutediscoveryrequest).append(", actuallyChanged=").append(flag1).append(", compositeDiscoveryRequest=").append(mCompositeDiscoveryRequest).toString());
+ sendGenericSuccess(messenger, i);
+ flag = true;
+ } else
+ {
+ flag = false;
+ }
+ return flag;
+ }
+
+ private boolean onSetRouteVolume(Messenger messenger, int i, int j, int k)
+ {
+ ClientRecord clientrecord = getClient(messenger);
+ if(clientrecord == null) goto _L2; else goto _L1
+_L1:
+ MediaRouteProvider.RouteController routecontroller = clientrecord.getRouteController(j);
+ if(routecontroller == null) goto _L2; else goto _L3
+_L3:
+ boolean flag;
+ routecontroller.onSetVolume(k);
+ if(DEBUG)
+ Log.d("MediaRouteProviderSrv", (new StringBuilder()).append(clientrecord).append(": Route volume changed").append(", controllerId=").append(j).append(", volume=").append(k).toString());
+ sendGenericSuccess(messenger, i);
+ flag = true;
+_L5:
+ return flag;
+_L2:
+ flag = false;
+ if(true) goto _L5; else goto _L4
+_L4:
+ }
+
+ private boolean onUnregisterClient(Messenger messenger, int i)
+ {
+ int j = findClient(messenger);
+ boolean flag;
+ if(j >= 0)
+ {
+ ClientRecord clientrecord = (ClientRecord)mClients.remove(j);
+ if(DEBUG)
+ Log.d("MediaRouteProviderSrv", (new StringBuilder()).append(clientrecord).append(": Unregistered").toString());
+ clientrecord.dispose();
+ sendGenericSuccess(messenger, i);
+ flag = true;
+ } else
+ {
+ flag = false;
+ }
+ return flag;
+ }
+
+ private boolean onUnselectRoute(Messenger messenger, int i, int j)
+ {
+ ClientRecord clientrecord = getClient(messenger);
+ if(clientrecord == null) goto _L2; else goto _L1
+_L1:
+ MediaRouteProvider.RouteController routecontroller = clientrecord.getRouteController(j);
+ if(routecontroller == null) goto _L2; else goto _L3
+_L3:
+ boolean flag;
+ routecontroller.onUnselect();
+ if(DEBUG)
+ Log.d("MediaRouteProviderSrv", (new StringBuilder()).append(clientrecord).append(": Route unselected").append(", controllerId=").append(j).toString());
+ sendGenericSuccess(messenger, i);
+ flag = true;
+_L5:
+ return flag;
+_L2:
+ flag = false;
+ if(true) goto _L5; else goto _L4
+_L4:
+ }
+
+ private boolean onUpdateRouteVolume(Messenger messenger, int i, int j, int k)
+ {
+ ClientRecord clientrecord = getClient(messenger);
+ if(clientrecord == null) goto _L2; else goto _L1
+_L1:
+ MediaRouteProvider.RouteController routecontroller = clientrecord.getRouteController(j);
+ if(routecontroller == null) goto _L2; else goto _L3
+_L3:
+ boolean flag;
+ routecontroller.onUpdateVolume(k);
+ if(DEBUG)
+ Log.d("MediaRouteProviderSrv", (new StringBuilder()).append(clientrecord).append(": Route volume updated").append(", controllerId=").append(j).append(", delta=").append(k).toString());
+ sendGenericSuccess(messenger, i);
+ flag = true;
+_L5:
+ return flag;
+_L2:
+ flag = false;
+ if(true) goto _L5; else goto _L4
+_L4:
+ }
+
+ private void sendDescriptorChanged(MediaRouteProviderDescriptor mediarouteproviderdescriptor)
+ {
+ Bundle bundle;
+ int i;
+ if(mediarouteproviderdescriptor != null)
+ bundle = mediarouteproviderdescriptor.asBundle();
+ else
+ bundle = null;
+ i = mClients.size();
+ for(int j = 0; j < i; j++)
+ {
+ ClientRecord clientrecord = (ClientRecord)mClients.get(j);
+ sendReply(clientrecord.mMessenger, 5, 0, 0, bundle, null);
+ if(DEBUG)
+ Log.d("MediaRouteProviderSrv", (new StringBuilder()).append(clientrecord).append(": Sent descriptor change event, descriptor=").append(mediarouteproviderdescriptor).toString());
+ }
+
+ }
+
+ private static void sendGenericFailure(Messenger messenger, int i)
+ {
+ if(i != 0)
+ sendReply(messenger, 0, i, 0, null, null);
+ }
+
+ private static void sendGenericSuccess(Messenger messenger, int i)
+ {
+ if(i != 0)
+ sendReply(messenger, 1, i, 0, null, null);
+ }
+
+ private static void sendReply(Messenger messenger, int i, int j, int k, Object obj, Bundle bundle)
+ {
+ Message message;
+ message = Message.obtain();
+ message.what = i;
+ message.arg1 = j;
+ message.arg2 = k;
+ message.obj = obj;
+ message.setData(bundle);
+ messenger.send(message);
+_L2:
+ return;
+ RemoteException remoteexception;
+ remoteexception;
+ Log.e("MediaRouteProviderSrv", (new StringBuilder()).append("Could not send message to ").append(getClientId(messenger)).toString(), remoteexception);
+ continue; /* Loop/switch isn't completed */
+ DeadObjectException deadobjectexception;
+ deadobjectexception;
+ if(true) goto _L2; else goto _L1
+_L1:
+ }
+
+ private boolean updateCompositeDiscoveryRequest()
+ {
+ MediaRouteDiscoveryRequest mediaroutediscoveryrequest = null;
+ MediaRouteSelector.Builder builder = null;
+ boolean flag = false;
+ int i = mClients.size();
+ int j = 0;
+ while(j < i)
+ {
+ MediaRouteDiscoveryRequest mediaroutediscoveryrequest1 = ((ClientRecord)mClients.get(j)).mDiscoveryRequest;
+ if(mediaroutediscoveryrequest1 != null && (!mediaroutediscoveryrequest1.getSelector().isEmpty() || mediaroutediscoveryrequest1.isActiveScan()))
+ {
+ flag |= mediaroutediscoveryrequest1.isActiveScan();
+ if(mediaroutediscoveryrequest == null)
+ {
+ mediaroutediscoveryrequest = mediaroutediscoveryrequest1;
+ } else
+ {
+ if(builder == null)
+ builder = new MediaRouteSelector.Builder(mediaroutediscoveryrequest.getSelector());
+ builder.addSelector(mediaroutediscoveryrequest1.getSelector());
+ }
+ }
+ j++;
+ }
+ if(builder != null)
+ mediaroutediscoveryrequest = new MediaRouteDiscoveryRequest(builder.build(), flag);
+ boolean flag1;
+ if(mCompositeDiscoveryRequest != mediaroutediscoveryrequest && (mCompositeDiscoveryRequest == null || !mCompositeDiscoveryRequest.equals(mediaroutediscoveryrequest)))
+ {
+ mCompositeDiscoveryRequest = mediaroutediscoveryrequest;
+ mProvider.setDiscoveryRequest(mediaroutediscoveryrequest);
+ flag1 = true;
+ } else
+ {
+ flag1 = false;
+ }
+ return flag1;
+ }
+
+ public MediaRouteProvider getMediaRouteProvider()
+ {
+ return mProvider;
+ }
+
+ public IBinder onBind(Intent intent)
+ {
+ if(!intent.getAction().equals("android.media.MediaRouteProviderService")) goto _L2; else goto _L1
+_L1:
+ if(mProvider == null)
+ {
+ MediaRouteProvider mediarouteprovider = onCreateMediaRouteProvider();
+ if(mediarouteprovider != null)
+ {
+ String s = mediarouteprovider.getMetadata().getPackageName();
+ if(!s.equals(getPackageName()))
+ throw new IllegalStateException((new StringBuilder()).append("onCreateMediaRouteProvider() returned a provider whose package name does not match the package name of the service. A media route provider service can only export its own media route providers. Provider package name: ").append(s).append(". Service package name: ").append(getPackageName()).append(".").toString());
+ mProvider = mediarouteprovider;
+ mProvider.setCallback(mProviderCallback);
+ }
+ }
+ if(mProvider == null) goto _L2; else goto _L3
+_L3:
+ IBinder ibinder = mReceiveMessenger.getBinder();
+_L5:
+ return ibinder;
+_L2:
+ ibinder = null;
+ if(true) goto _L5; else goto _L4
+_L4:
+ }
+
+ public abstract MediaRouteProvider onCreateMediaRouteProvider();
+
+ private static final boolean DEBUG = Log.isLoggable("MediaRouteProviderSrv", 3);
+ private static final int PRIVATE_MSG_CLIENT_DIED = 1;
+ public static final String SERVICE_INTERFACE = "android.media.MediaRouteProviderService";
+ private static final String TAG = "MediaRouteProviderSrv";
+ private final ArrayList mClients = new ArrayList();
+ private MediaRouteDiscoveryRequest mCompositeDiscoveryRequest;
+ private final PrivateHandler mPrivateHandler = new PrivateHandler();
+ private MediaRouteProvider mProvider;
+ private final ProviderCallback mProviderCallback = new ProviderCallback();
+ private final ReceiveHandler mReceiveHandler = new ReceiveHandler(this);
+ private final Messenger mReceiveMessenger;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouteSelector.java b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouteSelector.java
new file mode 100644
index 0000000..08dbfde
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouteSelector.java
@@ -0,0 +1,254 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v7.media;
+
+import android.content.IntentFilter;
+import android.os.Bundle;
+import java.util.*;
+
+public final class MediaRouteSelector
+{
+ public static final class Builder
+ {
+
+ public Builder addControlCategories(Collection collection)
+ {
+ if(collection == null)
+ throw new IllegalArgumentException("categories must not be null");
+ if(!collection.isEmpty())
+ {
+ for(Iterator iterator = collection.iterator(); iterator.hasNext(); addControlCategory((String)iterator.next()));
+ }
+ return this;
+ }
+
+ public Builder addControlCategory(String s)
+ {
+ if(s == null)
+ throw new IllegalArgumentException("category must not be null");
+ if(mControlCategories == null)
+ mControlCategories = new ArrayList();
+ if(!mControlCategories.contains(s))
+ mControlCategories.add(s);
+ return this;
+ }
+
+ public Builder addSelector(MediaRouteSelector mediarouteselector)
+ {
+ if(mediarouteselector == null)
+ {
+ throw new IllegalArgumentException("selector must not be null");
+ } else
+ {
+ addControlCategories(mediarouteselector.getControlCategories());
+ return this;
+ }
+ }
+
+ public MediaRouteSelector build()
+ {
+ MediaRouteSelector mediarouteselector;
+ if(mControlCategories == null)
+ {
+ mediarouteselector = MediaRouteSelector.EMPTY;
+ } else
+ {
+ Bundle bundle = new Bundle();
+ bundle.putStringArrayList("controlCategories", mControlCategories);
+ mediarouteselector = new MediaRouteSelector(bundle, mControlCategories);
+ }
+ return mediarouteselector;
+ }
+
+ private ArrayList mControlCategories;
+
+ public Builder()
+ {
+ }
+
+ public Builder(MediaRouteSelector mediarouteselector)
+ {
+ if(mediarouteselector == null)
+ throw new IllegalArgumentException("selector must not be null");
+ mediarouteselector.ensureControlCategories();
+ if(!mediarouteselector.mControlCategories.isEmpty())
+ mControlCategories = new ArrayList(mediarouteselector.mControlCategories);
+ }
+ }
+
+
+ private MediaRouteSelector(Bundle bundle, List list)
+ {
+ mBundle = bundle;
+ mControlCategories = list;
+ }
+
+
+ private void ensureControlCategories()
+ {
+ if(mControlCategories == null)
+ {
+ mControlCategories = mBundle.getStringArrayList("controlCategories");
+ if(mControlCategories == null || mControlCategories.isEmpty())
+ mControlCategories = Collections.emptyList();
+ }
+ }
+
+ public static MediaRouteSelector fromBundle(Bundle bundle)
+ {
+ MediaRouteSelector mediarouteselector;
+ if(bundle != null)
+ mediarouteselector = new MediaRouteSelector(bundle, null);
+ else
+ mediarouteselector = null;
+ return mediarouteselector;
+ }
+
+ public Bundle asBundle()
+ {
+ return mBundle;
+ }
+
+ public boolean contains(MediaRouteSelector mediarouteselector)
+ {
+ boolean flag;
+ if(mediarouteselector != null)
+ {
+ ensureControlCategories();
+ mediarouteselector.ensureControlCategories();
+ flag = mControlCategories.containsAll(mediarouteselector.mControlCategories);
+ } else
+ {
+ flag = false;
+ }
+ return flag;
+ }
+
+ public boolean equals(Object obj)
+ {
+ boolean flag;
+ if(obj instanceof MediaRouteSelector)
+ {
+ MediaRouteSelector mediarouteselector = (MediaRouteSelector)obj;
+ ensureControlCategories();
+ mediarouteselector.ensureControlCategories();
+ flag = mControlCategories.equals(mediarouteselector.mControlCategories);
+ } else
+ {
+ flag = false;
+ }
+ return flag;
+ }
+
+ public List getControlCategories()
+ {
+ ensureControlCategories();
+ return mControlCategories;
+ }
+
+ public boolean hasControlCategory(String s)
+ {
+ int i;
+ int j;
+ if(s == null)
+ break MISSING_BLOCK_LABEL_58;
+ ensureControlCategories();
+ i = mControlCategories.size();
+ j = 0;
+_L3:
+ if(j >= i)
+ break MISSING_BLOCK_LABEL_58;
+ if(!((String)mControlCategories.get(j)).equals(s)) goto _L2; else goto _L1
+_L1:
+ boolean flag = true;
+_L4:
+ return flag;
+_L2:
+ j++;
+ goto _L3
+ flag = false;
+ goto _L4
+ }
+
+ public int hashCode()
+ {
+ ensureControlCategories();
+ return mControlCategories.hashCode();
+ }
+
+ public boolean isEmpty()
+ {
+ ensureControlCategories();
+ return mControlCategories.isEmpty();
+ }
+
+ public boolean isValid()
+ {
+ ensureControlCategories();
+ boolean flag;
+ if(mControlCategories.contains(null))
+ flag = false;
+ else
+ flag = true;
+ return flag;
+ }
+
+ public boolean matchesControlFilters(List list)
+ {
+ int i;
+ int j;
+ int k;
+ if(list == null)
+ break MISSING_BLOCK_LABEL_105;
+ ensureControlCategories();
+ i = mControlCategories.size();
+ if(i == 0)
+ break MISSING_BLOCK_LABEL_105;
+ j = list.size();
+ k = 0;
+_L6:
+ if(k >= j) goto _L2; else goto _L1
+_L1:
+ IntentFilter intentfilter;
+ int l;
+ intentfilter = (IntentFilter)list.get(k);
+ if(intentfilter == null)
+ continue; /* Loop/switch isn't completed */
+ l = 0;
+_L5:
+ if(l >= i)
+ continue; /* Loop/switch isn't completed */
+ if(!intentfilter.hasCategory((String)mControlCategories.get(l))) goto _L4; else goto _L3
+_L3:
+ boolean flag = true;
+_L7:
+ return flag;
+_L4:
+ l++;
+ goto _L5
+ k++;
+ goto _L6
+_L2:
+ flag = false;
+ goto _L7
+ }
+
+ public String toString()
+ {
+ StringBuilder stringbuilder = new StringBuilder();
+ stringbuilder.append("MediaRouteSelector{ ");
+ stringbuilder.append("controlCategories=").append(Arrays.toString(getControlCategories().toArray()));
+ stringbuilder.append(" }");
+ return stringbuilder.toString();
+ }
+
+ public static final MediaRouteSelector EMPTY = new MediaRouteSelector(new Bundle(), null);
+ private static final String KEY_CONTROL_CATEGORIES = "controlCategories";
+ private final Bundle mBundle;
+ private List mControlCategories;
+
+
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouter.java b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouter.java
new file mode 100644
index 0000000..6a46099
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouter.java
@@ -0,0 +1,1765 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v7.media;
+
+import android.app.ActivityManager;
+import android.content.*;
+import android.content.res.Resources;
+import android.os.*;
+import android.support.v4.app.ActivityManagerCompat;
+import android.support.v4.hardware.display.DisplayManagerCompat;
+import android.support.v4.media.VolumeProviderCompat;
+import android.support.v4.media.session.MediaSessionCompat;
+import android.util.Log;
+import android.view.Display;
+import java.lang.annotation.Annotation;
+import java.lang.ref.WeakReference;
+import java.util.*;
+
+// Referenced classes of package android.support.v7.media:
+// MediaRouteSelector, MediaRouteProvider, SystemMediaRouteProvider, MediaRouteProviderDescriptor,
+// MediaRouteDescriptor, RegisteredMediaRouteProviderWatcher, MediaRouteDiscoveryRequest, RemoteControlClientCompat
+
+public final class MediaRouter
+{
+ private static final class GlobalMediaRouter
+ implements SystemMediaRouteProvider.SyncCallback, RegisteredMediaRouteProviderWatcher.Callback
+ {
+ private final class CallbackHandler extends Handler
+ {
+
+ private void invokeCallback(CallbackRecord callbackrecord, int i, Object obj)
+ {
+ MediaRouter mediarouter;
+ Callback callback;
+ mediarouter = callbackrecord.mRouter;
+ callback = callbackrecord.mCallback;
+ 0xff00 & i;
+ JVM INSTR lookupswitch 2: default 44
+ // 256: 45
+ // 512: 191;
+ goto _L1 _L2 _L3
+_L5:
+ return;
+_L2:
+ RouteInfo routeinfo = (RouteInfo)obj;
+ if(callbackrecord.filterRouteEvent(routeinfo))
+ switch(i)
+ {
+ case 257:
+ callback.onRouteAdded(mediarouter, routeinfo);
+ break;
+
+ case 258:
+ callback.onRouteRemoved(mediarouter, routeinfo);
+ break;
+
+ case 259:
+ callback.onRouteChanged(mediarouter, routeinfo);
+ break;
+
+ case 260:
+ callback.onRouteVolumeChanged(mediarouter, routeinfo);
+ break;
+
+ case 261:
+ callback.onRoutePresentationDisplayChanged(mediarouter, routeinfo);
+ break;
+
+ case 262:
+ callback.onRouteSelected(mediarouter, routeinfo);
+ break;
+
+ case 263:
+ callback.onRouteUnselected(mediarouter, routeinfo);
+ break;
+ }
+_L1:
+ if(true) goto _L5; else goto _L4
+_L4:
+_L3:
+ ProviderInfo providerinfo = (ProviderInfo)obj;
+ switch(i)
+ {
+ case 513:
+ callback.onProviderAdded(mediarouter, providerinfo);
+ break;
+
+ case 514:
+ callback.onProviderRemoved(mediarouter, providerinfo);
+ break;
+
+ case 515:
+ callback.onProviderChanged(mediarouter, providerinfo);
+ break;
+ }
+ if(true) goto _L5; else goto _L6
+_L6:
+ }
+
+ private void syncWithSystemProvider(int i, Object obj)
+ {
+ i;
+ JVM INSTR tableswitch 257 262: default 40
+ // 257 41
+ // 258 58
+ // 259 75
+ // 260 40
+ // 261 40
+ // 262 92;
+ goto _L1 _L2 _L3 _L4 _L1 _L1 _L5
+_L1:
+ return;
+_L2:
+ mSystemProvider.onSyncRouteAdded((RouteInfo)obj);
+ continue; /* Loop/switch isn't completed */
+_L3:
+ mSystemProvider.onSyncRouteRemoved((RouteInfo)obj);
+ continue; /* Loop/switch isn't completed */
+_L4:
+ mSystemProvider.onSyncRouteChanged((RouteInfo)obj);
+ continue; /* Loop/switch isn't completed */
+_L5:
+ mSystemProvider.onSyncRouteSelected((RouteInfo)obj);
+ if(true) goto _L1; else goto _L6
+_L6:
+ }
+
+ public void handleMessage(Message message)
+ {
+ int i;
+ Object obj;
+ i = message.what;
+ obj = message.obj;
+ syncWithSystemProvider(i, obj);
+ int j = mRouters.size();
+_L1:
+ MediaRouter mediarouter;
+ do
+ {
+ if(--j < 0)
+ break MISSING_BLOCK_LABEL_108;
+ mediarouter = (MediaRouter)((WeakReference)mRouters.get(j)).get();
+ if(mediarouter != null)
+ break MISSING_BLOCK_LABEL_92;
+ mRouters.remove(j);
+ } while(true);
+ Exception exception;
+ exception;
+ mTempCallbackRecords.clear();
+ throw exception;
+ mTempCallbackRecords.addAll(mediarouter.mCallbackRecords);
+ goto _L1
+ int k;
+ int l;
+ k = mTempCallbackRecords.size();
+ l = 0;
+_L2:
+ if(l >= k)
+ break MISSING_BLOCK_LABEL_151;
+ invokeCallback((CallbackRecord)mTempCallbackRecords.get(l), i, obj);
+ l++;
+ goto _L2
+ mTempCallbackRecords.clear();
+ return;
+ }
+
+ public void post(int i, Object obj)
+ {
+ obtainMessage(i, obj).sendToTarget();
+ }
+
+ public static final int MSG_PROVIDER_ADDED = 513;
+ public static final int MSG_PROVIDER_CHANGED = 515;
+ public static final int MSG_PROVIDER_REMOVED = 514;
+ public static final int MSG_ROUTE_ADDED = 257;
+ public static final int MSG_ROUTE_CHANGED = 259;
+ public static final int MSG_ROUTE_PRESENTATION_DISPLAY_CHANGED = 261;
+ public static final int MSG_ROUTE_REMOVED = 258;
+ public static final int MSG_ROUTE_SELECTED = 262;
+ public static final int MSG_ROUTE_UNSELECTED = 263;
+ public static final int MSG_ROUTE_VOLUME_CHANGED = 260;
+ private static final int MSG_TYPE_MASK = 65280;
+ private static final int MSG_TYPE_PROVIDER = 512;
+ private static final int MSG_TYPE_ROUTE = 256;
+ private final ArrayList mTempCallbackRecords;
+ final GlobalMediaRouter this$0;
+
+ private CallbackHandler()
+ {
+ this$0 = GlobalMediaRouter.this;
+ super();
+ mTempCallbackRecords = new ArrayList();
+ }
+
+ }
+
+ private final class RemoteControlClientRecord
+ implements RemoteControlClientCompat.VolumeCallback
+ {
+
+ public void disconnect()
+ {
+ mDisconnected = true;
+ mRccCompat.setVolumeCallback(null);
+ }
+
+ public Object getRemoteControlClient()
+ {
+ return mRccCompat.getRemoteControlClient();
+ }
+
+ public void onVolumeSetRequest(int i)
+ {
+ if(!mDisconnected && mSelectedRoute != null)
+ mSelectedRoute.requestSetVolume(i);
+ }
+
+ public void onVolumeUpdateRequest(int i)
+ {
+ if(!mDisconnected && mSelectedRoute != null)
+ mSelectedRoute.requestUpdateVolume(i);
+ }
+
+ public void updatePlaybackInfo()
+ {
+ mRccCompat.setPlaybackInfo(mPlaybackInfo);
+ }
+
+ private boolean mDisconnected;
+ private final RemoteControlClientCompat mRccCompat;
+ final GlobalMediaRouter this$0;
+
+ public RemoteControlClientRecord(Object obj)
+ {
+ this$0 = GlobalMediaRouter.this;
+ super();
+ mRccCompat = RemoteControlClientCompat.obtain(mApplicationContext, obj);
+ mRccCompat.setVolumeCallback(this);
+ updatePlaybackInfo();
+ }
+ }
+
+ private final class MediaSessionRecord
+ {
+
+ public void clearVolumeHandling()
+ {
+ mMsCompat.setPlaybackToLocal(mPlaybackInfo.playbackStream);
+ mVpCompat = null;
+ }
+
+ public void configureVolume(int i, int j, int k)
+ {
+ if(mVpCompat != null && i == mControlType && j == mMaxVolume)
+ {
+ mVpCompat.setCurrentVolume(k);
+ } else
+ {
+ mVpCompat = new VolumeProviderCompat(i, j, k) {
+
+ public void onAdjustVolume(int l)
+ {
+ if(mSelectedRoute != null)
+ mSelectedRoute.requestUpdateVolume(l);
+ }
+
+ public void onSetVolumeTo(int l)
+ {
+ if(mSelectedRoute != null)
+ mSelectedRoute.requestSetVolume(l);
+ }
+
+ final MediaSessionRecord this$1;
+
+
+ {
+ this$1 = MediaSessionRecord.this;
+ super(i, j, k);
+ }
+ }
+;
+ mMsCompat.setPlaybackToRemote(mVpCompat);
+ }
+ }
+
+ private int mControlType;
+ private int mMaxVolume;
+ private final MediaSessionCompat mMsCompat;
+ private VolumeProviderCompat mVpCompat;
+ final GlobalMediaRouter this$0;
+
+ public MediaSessionRecord(Object obj)
+ {
+ this$0 = GlobalMediaRouter.this;
+ super();
+ mMsCompat = MediaSessionCompat.obtain(obj);
+ }
+ }
+
+ private final class ProviderCallback extends MediaRouteProvider.Callback
+ {
+
+ public void onDescriptorChanged(MediaRouteProvider mediarouteprovider, MediaRouteProviderDescriptor mediarouteproviderdescriptor)
+ {
+ updateProviderDescriptor(mediarouteprovider, mediarouteproviderdescriptor);
+ }
+
+ final GlobalMediaRouter this$0;
+
+ private ProviderCallback()
+ {
+ this$0 = GlobalMediaRouter.this;
+ super();
+ }
+
+ }
+
+
+ private String assignRouteUniqueId(ProviderInfo providerinfo, String s)
+ {
+ String s1 = (new StringBuilder()).append(providerinfo.getComponentName().flattenToShortString()).append(":").append(s).toString();
+ if(findRouteByUniqueId(s1) >= 0) goto _L2; else goto _L1
+_L1:
+ return s1;
+_L2:
+ int i = 2;
+ do
+ {
+label0:
+ {
+ Locale locale = Locale.US;
+ Object aobj[] = new Object[2];
+ aobj[0] = s1;
+ aobj[1] = Integer.valueOf(i);
+ String s2 = String.format(locale, "%s_%d", aobj);
+ if(findRouteByUniqueId(s2) >= 0)
+ break label0;
+ s1 = s2;
+ }
+ if(true)
+ continue;
+ i++;
+ } while(true);
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ private RouteInfo chooseFallbackRoute()
+ {
+ Iterator iterator = mRoutes.iterator();
+_L4:
+ if(!iterator.hasNext()) goto _L2; else goto _L1
+_L1:
+ RouteInfo routeinfo = (RouteInfo)iterator.next();
+ if(routeinfo == mDefaultRoute || !isSystemLiveAudioOnlyRoute(routeinfo) || !isRouteSelectable(routeinfo)) goto _L4; else goto _L3
+_L3:
+ return routeinfo;
+_L2:
+ routeinfo = mDefaultRoute;
+ if(true) goto _L3; else goto _L5
+_L5:
+ }
+
+ private int findProviderInfo(MediaRouteProvider mediarouteprovider)
+ {
+ int i;
+ int j;
+ i = mProviders.size();
+ j = 0;
+_L3:
+ if(j >= i)
+ break MISSING_BLOCK_LABEL_41;
+ if(((ProviderInfo)mProviders.get(j)).mProviderInstance != mediarouteprovider) goto _L2; else goto _L1
+_L1:
+ return j;
+_L2:
+ j++;
+ goto _L3
+ j = -1;
+ goto _L1
+ }
+
+ private int findRemoteControlClientRecord(Object obj)
+ {
+ int i;
+ int j;
+ i = mRemoteControlClients.size();
+ j = 0;
+_L3:
+ if(j >= i)
+ break MISSING_BLOCK_LABEL_41;
+ if(((RemoteControlClientRecord)mRemoteControlClients.get(j)).getRemoteControlClient() != obj) goto _L2; else goto _L1
+_L1:
+ return j;
+_L2:
+ j++;
+ goto _L3
+ j = -1;
+ goto _L1
+ }
+
+ private int findRouteByUniqueId(String s)
+ {
+ int i;
+ int j;
+ i = mRoutes.size();
+ j = 0;
+_L3:
+ if(j >= i)
+ break MISSING_BLOCK_LABEL_44;
+ if(!((RouteInfo)mRoutes.get(j)).mUniqueId.equals(s)) goto _L2; else goto _L1
+_L1:
+ return j;
+_L2:
+ j++;
+ goto _L3
+ j = -1;
+ goto _L1
+ }
+
+ private boolean isRouteSelectable(RouteInfo routeinfo)
+ {
+ boolean flag;
+ if(routeinfo.mDescriptor != null && routeinfo.mEnabled)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ private boolean isSystemDefaultRoute(RouteInfo routeinfo)
+ {
+ boolean flag;
+ if(routeinfo.getProviderInstance() == mSystemProvider && routeinfo.mDescriptorId.equals("DEFAULT_ROUTE"))
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ private boolean isSystemLiveAudioOnlyRoute(RouteInfo routeinfo)
+ {
+ boolean flag;
+ if(routeinfo.getProviderInstance() == mSystemProvider && routeinfo.supportsControlCategory("android.media.intent.category.LIVE_AUDIO") && !routeinfo.supportsControlCategory("android.media.intent.category.LIVE_VIDEO"))
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ private void setSelectedRouteInternal(RouteInfo routeinfo)
+ {
+ if(mSelectedRoute != routeinfo)
+ {
+ if(mSelectedRoute != null)
+ {
+ if(MediaRouter.DEBUG)
+ Log.d("MediaRouter", (new StringBuilder()).append("Route unselected: ").append(mSelectedRoute).toString());
+ mCallbackHandler.post(263, mSelectedRoute);
+ if(mSelectedRouteController != null)
+ {
+ mSelectedRouteController.onUnselect();
+ mSelectedRouteController.onRelease();
+ mSelectedRouteController = null;
+ }
+ }
+ mSelectedRoute = routeinfo;
+ if(mSelectedRoute != null)
+ {
+ mSelectedRouteController = routeinfo.getProviderInstance().onCreateRouteController(routeinfo.mDescriptorId);
+ if(mSelectedRouteController != null)
+ mSelectedRouteController.onSelect();
+ if(MediaRouter.DEBUG)
+ Log.d("MediaRouter", (new StringBuilder()).append("Route selected: ").append(mSelectedRoute).toString());
+ mCallbackHandler.post(262, mSelectedRoute);
+ }
+ updatePlaybackInfoFromSelectedRoute();
+ }
+ }
+
+ private void updatePlaybackInfoFromSelectedRoute()
+ {
+ if(mSelectedRoute != null)
+ {
+ mPlaybackInfo.volume = mSelectedRoute.getVolume();
+ mPlaybackInfo.volumeMax = mSelectedRoute.getVolumeMax();
+ mPlaybackInfo.volumeHandling = mSelectedRoute.getVolumeHandling();
+ mPlaybackInfo.playbackStream = mSelectedRoute.getPlaybackStream();
+ mPlaybackInfo.playbackType = mSelectedRoute.getPlaybackType();
+ int i = mRemoteControlClients.size();
+ for(int j = 0; j < i; j++)
+ ((RemoteControlClientRecord)mRemoteControlClients.get(j)).updatePlaybackInfo();
+
+ if(mMediaSession != null)
+ {
+ byte byte0 = 0;
+ if(mPlaybackInfo.volumeHandling == 1)
+ byte0 = 2;
+ mMediaSession.configureVolume(byte0, mPlaybackInfo.volumeMax, mPlaybackInfo.volume);
+ }
+ }
+ }
+
+ private void updateProviderContents(ProviderInfo providerinfo, MediaRouteProviderDescriptor mediarouteproviderdescriptor)
+ {
+ int i;
+ boolean flag;
+ if(!providerinfo.updateDescriptor(mediarouteproviderdescriptor))
+ break MISSING_BLOCK_LABEL_687;
+ i = 0;
+ flag = false;
+ if(mediarouteproviderdescriptor == null) goto _L2; else goto _L1
+_L1:
+ if(!mediarouteproviderdescriptor.isValid()) goto _L4; else goto _L3
+_L3:
+ List list = mediarouteproviderdescriptor.getRoutes();
+ int l = list.size();
+ int i1 = 0;
+ int j1 = 0;
+ while(i1 < l)
+ {
+ MediaRouteDescriptor mediaroutedescriptor = (MediaRouteDescriptor)list.get(i1);
+ String s = mediaroutedescriptor.getId();
+ int k1 = providerinfo.findRouteByDescriptorId(s);
+ int l1;
+ if(k1 < 0)
+ {
+ RouteInfo routeinfo2 = new RouteInfo(providerinfo, s, assignRouteUniqueId(providerinfo, s));
+ ArrayList arraylist = providerinfo.mRoutes;
+ l1 = j1 + 1;
+ arraylist.add(j1, routeinfo2);
+ mRoutes.add(routeinfo2);
+ routeinfo2.updateDescriptor(mediaroutedescriptor);
+ if(MediaRouter.DEBUG)
+ Log.d("MediaRouter", (new StringBuilder()).append("Route added: ").append(routeinfo2).toString());
+ mCallbackHandler.post(257, routeinfo2);
+ } else
+ if(k1 < j1)
+ {
+ Log.w("MediaRouter", (new StringBuilder()).append("Ignoring route descriptor with duplicate id: ").append(mediaroutedescriptor).toString());
+ l1 = j1;
+ } else
+ {
+ RouteInfo routeinfo3 = (RouteInfo)providerinfo.mRoutes.get(k1);
+ ArrayList arraylist1 = providerinfo.mRoutes;
+ l1 = j1 + 1;
+ Collections.swap(arraylist1, k1, j1);
+ int i2 = routeinfo3.updateDescriptor(mediaroutedescriptor);
+ if(i2 != 0)
+ {
+ if((i2 & 1) != 0)
+ {
+ if(MediaRouter.DEBUG)
+ Log.d("MediaRouter", (new StringBuilder()).append("Route changed: ").append(routeinfo3).toString());
+ mCallbackHandler.post(259, routeinfo3);
+ }
+ if((i2 & 2) != 0)
+ {
+ if(MediaRouter.DEBUG)
+ Log.d("MediaRouter", (new StringBuilder()).append("Route volume changed: ").append(routeinfo3).toString());
+ mCallbackHandler.post(260, routeinfo3);
+ }
+ if((i2 & 4) != 0)
+ {
+ if(MediaRouter.DEBUG)
+ Log.d("MediaRouter", (new StringBuilder()).append("Route presentation display changed: ").append(routeinfo3).toString());
+ mCallbackHandler.post(261, routeinfo3);
+ }
+ if(routeinfo3 == mSelectedRoute)
+ flag = true;
+ }
+ }
+ i1++;
+ j1 = l1;
+ }
+ i = j1;
+_L2:
+ for(int j = -1 + providerinfo.mRoutes.size(); j >= i; j--)
+ {
+ RouteInfo routeinfo1 = (RouteInfo)providerinfo.mRoutes.get(j);
+ routeinfo1.updateDescriptor(null);
+ mRoutes.remove(routeinfo1);
+ }
+
+ break; /* Loop/switch isn't completed */
+_L4:
+ Log.w("MediaRouter", (new StringBuilder()).append("Ignoring invalid provider descriptor: ").append(mediarouteproviderdescriptor).toString());
+ if(true) goto _L2; else goto _L5
+_L5:
+ updateSelectedRouteIfNeeded(flag);
+ for(int k = -1 + providerinfo.mRoutes.size(); k >= i; k--)
+ {
+ RouteInfo routeinfo = (RouteInfo)providerinfo.mRoutes.remove(k);
+ if(MediaRouter.DEBUG)
+ Log.d("MediaRouter", (new StringBuilder()).append("Route removed: ").append(routeinfo).toString());
+ mCallbackHandler.post(258, routeinfo);
+ }
+
+ if(MediaRouter.DEBUG)
+ Log.d("MediaRouter", (new StringBuilder()).append("Provider changed: ").append(providerinfo).toString());
+ mCallbackHandler.post(515, providerinfo);
+ }
+
+ private void updateProviderDescriptor(MediaRouteProvider mediarouteprovider, MediaRouteProviderDescriptor mediarouteproviderdescriptor)
+ {
+ int i = findProviderInfo(mediarouteprovider);
+ if(i >= 0)
+ updateProviderContents((ProviderInfo)mProviders.get(i), mediarouteproviderdescriptor);
+ }
+
+ private void updateSelectedRouteIfNeeded(boolean flag)
+ {
+label0:
+ {
+ if(mDefaultRoute != null && !isRouteSelectable(mDefaultRoute))
+ {
+ Log.i("MediaRouter", (new StringBuilder()).append("Clearing the default route because it is no longer selectable: ").append(mDefaultRoute).toString());
+ mDefaultRoute = null;
+ }
+ if(mDefaultRoute != null || mRoutes.isEmpty())
+ break label0;
+ Iterator iterator = mRoutes.iterator();
+ RouteInfo routeinfo;
+ do
+ {
+ if(!iterator.hasNext())
+ break label0;
+ routeinfo = (RouteInfo)iterator.next();
+ } while(!isSystemDefaultRoute(routeinfo) || !isRouteSelectable(routeinfo));
+ mDefaultRoute = routeinfo;
+ Log.i("MediaRouter", (new StringBuilder()).append("Found default route: ").append(mDefaultRoute).toString());
+ }
+ if(mSelectedRoute != null && !isRouteSelectable(mSelectedRoute))
+ {
+ Log.i("MediaRouter", (new StringBuilder()).append("Unselecting the current route because it is no longer selectable: ").append(mSelectedRoute).toString());
+ setSelectedRouteInternal(null);
+ }
+ if(mSelectedRoute != null) goto _L2; else goto _L1
+_L1:
+ setSelectedRouteInternal(chooseFallbackRoute());
+_L4:
+ return;
+_L2:
+ if(flag)
+ updatePlaybackInfoFromSelectedRoute();
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ public void addProvider(MediaRouteProvider mediarouteprovider)
+ {
+ if(findProviderInfo(mediarouteprovider) < 0)
+ {
+ ProviderInfo providerinfo = new ProviderInfo(mediarouteprovider);
+ mProviders.add(providerinfo);
+ if(MediaRouter.DEBUG)
+ Log.d("MediaRouter", (new StringBuilder()).append("Provider added: ").append(providerinfo).toString());
+ mCallbackHandler.post(513, providerinfo);
+ updateProviderContents(providerinfo, mediarouteprovider.getDescriptor());
+ mediarouteprovider.setCallback(mProviderCallback);
+ mediarouteprovider.setDiscoveryRequest(mDiscoveryRequest);
+ }
+ }
+
+ public void addRemoteControlClient(Object obj)
+ {
+ if(findRemoteControlClientRecord(obj) < 0)
+ {
+ RemoteControlClientRecord remotecontrolclientrecord = new RemoteControlClientRecord(obj);
+ mRemoteControlClients.add(remotecontrolclientrecord);
+ }
+ }
+
+ public ContentResolver getContentResolver()
+ {
+ return mApplicationContext.getContentResolver();
+ }
+
+ public RouteInfo getDefaultRoute()
+ {
+ if(mDefaultRoute == null)
+ throw new IllegalStateException("There is no default route. The media router has not yet been fully initialized.");
+ else
+ return mDefaultRoute;
+ }
+
+ public Display getDisplay(int i)
+ {
+ return mDisplayManager.getDisplay(i);
+ }
+
+ public Context getProviderContext(String s)
+ {
+ if(!s.equals("android")) goto _L2; else goto _L1
+_L1:
+ Context context = mApplicationContext;
+_L4:
+ return context;
+_L2:
+ Context context1 = mApplicationContext.createPackageContext(s, 4);
+ context = context1;
+ continue; /* Loop/switch isn't completed */
+ android.content.pm.PackageManager.NameNotFoundException namenotfoundexception;
+ namenotfoundexception;
+ context = null;
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ public List getProviders()
+ {
+ return mProviders;
+ }
+
+ public MediaRouter getRouter(Context context)
+ {
+ if(mediarouter2.mContext != context) goto _L2; else goto _L1
+_L1:
+ mediarouter1 = mediarouter2;
+_L4:
+ return mediarouter1;
+_L2:
+ MediaRouter mediarouter1;
+ MediaRouter mediarouter2;
+ for(int i = mRouters.size(); --i >= 0;)
+ {
+ mediarouter2 = (MediaRouter)((WeakReference)mRouters.get(i)).get();
+ if(mediarouter2 != null)
+ continue; /* Loop/switch isn't completed */
+ mRouters.remove(i);
+ }
+
+ MediaRouter mediarouter = new MediaRouter(context);
+ mRouters.add(new WeakReference(mediarouter));
+ mediarouter1 = mediarouter;
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ public List getRoutes()
+ {
+ return mRoutes;
+ }
+
+ public RouteInfo getSelectedRoute()
+ {
+ if(mSelectedRoute == null)
+ throw new IllegalStateException("There is no currently selected route. The media router has not yet been fully initialized.");
+ else
+ return mSelectedRoute;
+ }
+
+ public RouteInfo getSystemRouteByDescriptorId(String s)
+ {
+ int i = findProviderInfo(mSystemProvider);
+ if(i < 0) goto _L2; else goto _L1
+_L1:
+ ProviderInfo providerinfo;
+ int j;
+ providerinfo = (ProviderInfo)mProviders.get(i);
+ j = providerinfo.findRouteByDescriptorId(s);
+ if(j < 0) goto _L2; else goto _L3
+_L3:
+ RouteInfo routeinfo = (RouteInfo)providerinfo.mRoutes.get(j);
+_L5:
+ return routeinfo;
+_L2:
+ routeinfo = null;
+ if(true) goto _L5; else goto _L4
+_L4:
+ }
+
+ public boolean isRouteAvailable(MediaRouteSelector mediarouteselector, int i)
+ {
+ boolean flag = false;
+ if(!mediarouteselector.isEmpty()) goto _L2; else goto _L1
+_L1:
+ return flag;
+_L2:
+ int j;
+ int k;
+ if((i & 2) == 0 && mLowRam)
+ {
+ flag = true;
+ continue; /* Loop/switch isn't completed */
+ }
+ j = mRoutes.size();
+ k = 0;
+_L4:
+ RouteInfo routeinfo;
+ if(k >= j)
+ continue; /* Loop/switch isn't completed */
+ routeinfo = (RouteInfo)mRoutes.get(k);
+ goto _L3
+_L6:
+ k++;
+ if(true) goto _L4; else goto _L3
+_L3:
+ if((i & 1) != 0 && routeinfo.isDefault() || !routeinfo.matchesSelector(mediarouteselector)) goto _L6; else goto _L5
+_L5:
+ flag = true;
+ if(true) goto _L1; else goto _L7
+_L7:
+ }
+
+ public void removeProvider(MediaRouteProvider mediarouteprovider)
+ {
+ int i = findProviderInfo(mediarouteprovider);
+ if(i >= 0)
+ {
+ mediarouteprovider.setCallback(null);
+ mediarouteprovider.setDiscoveryRequest(null);
+ ProviderInfo providerinfo = (ProviderInfo)mProviders.get(i);
+ updateProviderContents(providerinfo, null);
+ if(MediaRouter.DEBUG)
+ Log.d("MediaRouter", (new StringBuilder()).append("Provider removed: ").append(providerinfo).toString());
+ mCallbackHandler.post(514, providerinfo);
+ mProviders.remove(i);
+ }
+ }
+
+ public void removeRemoteControlClient(Object obj)
+ {
+ int i = findRemoteControlClientRecord(obj);
+ if(i >= 0)
+ ((RemoteControlClientRecord)mRemoteControlClients.remove(i)).disconnect();
+ }
+
+ public void requestSetVolume(RouteInfo routeinfo, int i)
+ {
+ if(routeinfo == mSelectedRoute && mSelectedRouteController != null)
+ mSelectedRouteController.onSetVolume(i);
+ }
+
+ public void requestUpdateVolume(RouteInfo routeinfo, int i)
+ {
+ if(routeinfo == mSelectedRoute && mSelectedRouteController != null)
+ mSelectedRouteController.onUpdateVolume(i);
+ }
+
+ public void selectRoute(RouteInfo routeinfo)
+ {
+ if(!mRoutes.contains(routeinfo))
+ Log.w("MediaRouter", (new StringBuilder()).append("Ignoring attempt to select removed route: ").append(routeinfo).toString());
+ else
+ if(!routeinfo.mEnabled)
+ Log.w("MediaRouter", (new StringBuilder()).append("Ignoring attempt to select disabled route: ").append(routeinfo).toString());
+ else
+ setSelectedRouteInternal(routeinfo);
+ }
+
+ public void sendControlRequest(RouteInfo routeinfo, Intent intent, ControlRequestCallback controlrequestcallback)
+ {
+ if((routeinfo != mSelectedRoute || mSelectedRouteController == null || !mSelectedRouteController.onControlRequest(intent, controlrequestcallback)) && controlrequestcallback != null)
+ controlrequestcallback.onError(null, null);
+ }
+
+ public void setMediaSession(Object obj)
+ {
+ if(mMediaSession != null)
+ mMediaSession.clearVolumeHandling();
+ if(obj == null)
+ {
+ mMediaSession = null;
+ } else
+ {
+ mMediaSession = new MediaSessionRecord(obj);
+ updatePlaybackInfoFromSelectedRoute();
+ }
+ }
+
+ public void start()
+ {
+ mRegisteredProviderWatcher = new RegisteredMediaRouteProviderWatcher(mApplicationContext, this);
+ mRegisteredProviderWatcher.start();
+ }
+
+ public void updateDiscoveryRequest()
+ {
+ boolean flag;
+ boolean flag1;
+ MediaRouteSelector mediarouteselector;
+ flag = false;
+ flag1 = false;
+ MediaRouteSelector.Builder builder = new MediaRouteSelector.Builder();
+ for(int i = mRouters.size(); --i >= 0;)
+ {
+ MediaRouter mediarouter = (MediaRouter)((WeakReference)mRouters.get(i)).get();
+ if(mediarouter == null)
+ {
+ mRouters.remove(i);
+ } else
+ {
+ int l = mediarouter.mCallbackRecords.size();
+ int i1 = 0;
+ while(i1 < l)
+ {
+ CallbackRecord callbackrecord = (CallbackRecord)mediarouter.mCallbackRecords.get(i1);
+ builder.addSelector(callbackrecord.mSelector);
+ if((1 & callbackrecord.mFlags) != 0)
+ {
+ flag1 = true;
+ flag = true;
+ }
+ if((4 & callbackrecord.mFlags) != 0 && !mLowRam)
+ flag = true;
+ if((8 & callbackrecord.mFlags) != 0)
+ flag = true;
+ i1++;
+ }
+ }
+ }
+
+ if(flag)
+ mediarouteselector = builder.build();
+ else
+ mediarouteselector = MediaRouteSelector.EMPTY;
+ if(mDiscoveryRequest == null || !mDiscoveryRequest.getSelector().equals(mediarouteselector) || mDiscoveryRequest.isActiveScan() != flag1) goto _L2; else goto _L1
+_L1:
+ return;
+_L2:
+ if(!mediarouteselector.isEmpty() || flag1)
+ break; /* Loop/switch isn't completed */
+ if(mDiscoveryRequest == null)
+ continue; /* Loop/switch isn't completed */
+ mDiscoveryRequest = null;
+_L4:
+ if(MediaRouter.DEBUG)
+ Log.d("MediaRouter", (new StringBuilder()).append("Updated discovery request: ").append(mDiscoveryRequest).toString());
+ if(flag && !flag1 && mLowRam)
+ Log.i("MediaRouter", "Forcing passive route discovery on a low-RAM device, system performance may be affected. Please consider using CALLBACK_FLAG_REQUEST_DISCOVERY instead of CALLBACK_FLAG_FORCE_DISCOVERY.");
+ int j = mProviders.size();
+ int k = 0;
+ while(k < j)
+ {
+ ((ProviderInfo)mProviders.get(k)).mProviderInstance.setDiscoveryRequest(mDiscoveryRequest);
+ k++;
+ }
+ if(true) goto _L1; else goto _L3
+_L3:
+ mDiscoveryRequest = new MediaRouteDiscoveryRequest(mediarouteselector, flag1);
+ goto _L4
+ if(true) goto _L1; else goto _L5
+_L5:
+ }
+
+ private final Context mApplicationContext;
+ private final CallbackHandler mCallbackHandler = new CallbackHandler();
+ private RouteInfo mDefaultRoute;
+ private MediaRouteDiscoveryRequest mDiscoveryRequest;
+ private final DisplayManagerCompat mDisplayManager;
+ private final boolean mLowRam;
+ private MediaSessionRecord mMediaSession;
+ private final RemoteControlClientCompat.PlaybackInfo mPlaybackInfo = new RemoteControlClientCompat.PlaybackInfo();
+ private final ProviderCallback mProviderCallback = new ProviderCallback();
+ private final ArrayList mProviders = new ArrayList();
+ private RegisteredMediaRouteProviderWatcher mRegisteredProviderWatcher;
+ private final ArrayList mRemoteControlClients = new ArrayList();
+ private final ArrayList mRouters = new ArrayList();
+ private final ArrayList mRoutes = new ArrayList();
+ private RouteInfo mSelectedRoute;
+ private MediaRouteProvider.RouteController mSelectedRouteController;
+ private final SystemMediaRouteProvider mSystemProvider;
+
+
+
+
+
+
+
+ GlobalMediaRouter(Context context)
+ {
+ mApplicationContext = context;
+ mDisplayManager = DisplayManagerCompat.getInstance(context);
+ mLowRam = ActivityManagerCompat.isLowRamDevice((ActivityManager)context.getSystemService("activity"));
+ mSystemProvider = SystemMediaRouteProvider.obtain(context, this);
+ addProvider(mSystemProvider);
+ }
+ }
+
+ private static final class CallbackRecord
+ {
+
+ public boolean filterRouteEvent(RouteInfo routeinfo)
+ {
+ boolean flag;
+ if((2 & mFlags) != 0 || routeinfo.matchesSelector(mSelector))
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ public final Callback mCallback;
+ public int mFlags;
+ public final MediaRouter mRouter;
+ public MediaRouteSelector mSelector;
+
+ public CallbackRecord(MediaRouter mediarouter, Callback callback)
+ {
+ mRouter = mediarouter;
+ mCallback = callback;
+ mSelector = MediaRouteSelector.EMPTY;
+ }
+ }
+
+ public static abstract class ControlRequestCallback
+ {
+
+ public void onError(String s, Bundle bundle)
+ {
+ }
+
+ public void onResult(Bundle bundle)
+ {
+ }
+
+ public ControlRequestCallback()
+ {
+ }
+ }
+
+ public static abstract class Callback
+ {
+
+ public void onProviderAdded(MediaRouter mediarouter, ProviderInfo providerinfo)
+ {
+ }
+
+ public void onProviderChanged(MediaRouter mediarouter, ProviderInfo providerinfo)
+ {
+ }
+
+ public void onProviderRemoved(MediaRouter mediarouter, ProviderInfo providerinfo)
+ {
+ }
+
+ public void onRouteAdded(MediaRouter mediarouter, RouteInfo routeinfo)
+ {
+ }
+
+ public void onRouteChanged(MediaRouter mediarouter, RouteInfo routeinfo)
+ {
+ }
+
+ public void onRoutePresentationDisplayChanged(MediaRouter mediarouter, RouteInfo routeinfo)
+ {
+ }
+
+ public void onRouteRemoved(MediaRouter mediarouter, RouteInfo routeinfo)
+ {
+ }
+
+ public void onRouteSelected(MediaRouter mediarouter, RouteInfo routeinfo)
+ {
+ }
+
+ public void onRouteUnselected(MediaRouter mediarouter, RouteInfo routeinfo)
+ {
+ }
+
+ public void onRouteVolumeChanged(MediaRouter mediarouter, RouteInfo routeinfo)
+ {
+ }
+
+ public Callback()
+ {
+ }
+ }
+
+ public static final class ProviderInfo
+ {
+
+ int findRouteByDescriptorId(String s)
+ {
+ int i;
+ int j;
+ i = mRoutes.size();
+ j = 0;
+_L3:
+ if(j >= i)
+ break MISSING_BLOCK_LABEL_44;
+ if(!((RouteInfo)mRoutes.get(j)).mDescriptorId.equals(s)) goto _L2; else goto _L1
+_L1:
+ return j;
+_L2:
+ j++;
+ goto _L3
+ j = -1;
+ goto _L1
+ }
+
+ public ComponentName getComponentName()
+ {
+ return mMetadata.getComponentName();
+ }
+
+ public String getPackageName()
+ {
+ return mMetadata.getPackageName();
+ }
+
+ public MediaRouteProvider getProviderInstance()
+ {
+ MediaRouter.checkCallingThread();
+ return mProviderInstance;
+ }
+
+ Resources getResources()
+ {
+ if(mResources == null && !mResourcesNotAvailable)
+ {
+ String s = getPackageName();
+ Context context = MediaRouter.sGlobal.getProviderContext(s);
+ if(context != null)
+ {
+ mResources = context.getResources();
+ } else
+ {
+ Log.w("MediaRouter", (new StringBuilder()).append("Unable to obtain resources for route provider package: ").append(s).toString());
+ mResourcesNotAvailable = true;
+ }
+ }
+ return mResources;
+ }
+
+ public List getRoutes()
+ {
+ MediaRouter.checkCallingThread();
+ return mRoutes;
+ }
+
+ public String toString()
+ {
+ return (new StringBuilder()).append("MediaRouter.RouteProviderInfo{ packageName=").append(getPackageName()).append(" }").toString();
+ }
+
+ boolean updateDescriptor(MediaRouteProviderDescriptor mediarouteproviderdescriptor)
+ {
+ boolean flag;
+ if(mDescriptor != mediarouteproviderdescriptor)
+ {
+ mDescriptor = mediarouteproviderdescriptor;
+ flag = true;
+ } else
+ {
+ flag = false;
+ }
+ return flag;
+ }
+
+ private MediaRouteProviderDescriptor mDescriptor;
+ private final MediaRouteProvider.ProviderMetadata mMetadata;
+ private final MediaRouteProvider mProviderInstance;
+ private Resources mResources;
+ private boolean mResourcesNotAvailable;
+ private final ArrayList mRoutes = new ArrayList();
+
+
+
+ ProviderInfo(MediaRouteProvider mediarouteprovider)
+ {
+ mProviderInstance = mediarouteprovider;
+ mMetadata = mediarouteprovider.getMetadata();
+ }
+ }
+
+ public static final class RouteInfo
+ {
+ private static interface PlaybackVolume
+ extends Annotation
+ {
+ }
+
+ private static interface PlaybackType
+ extends Annotation
+ {
+ }
+
+
+ public List getControlFilters()
+ {
+ return mControlFilters;
+ }
+
+ public String getDescription()
+ {
+ return mDescription;
+ }
+
+ String getDescriptorId()
+ {
+ return mDescriptorId;
+ }
+
+ public Bundle getExtras()
+ {
+ return mExtras;
+ }
+
+ public String getId()
+ {
+ return mUniqueId;
+ }
+
+ public String getName()
+ {
+ return mName;
+ }
+
+ public int getPlaybackStream()
+ {
+ return mPlaybackStream;
+ }
+
+ public int getPlaybackType()
+ {
+ return mPlaybackType;
+ }
+
+ public Display getPresentationDisplay()
+ {
+ MediaRouter.checkCallingThread();
+ if(mPresentationDisplayId >= 0 && mPresentationDisplay == null)
+ mPresentationDisplay = MediaRouter.sGlobal.getDisplay(mPresentationDisplayId);
+ return mPresentationDisplay;
+ }
+
+ public ProviderInfo getProvider()
+ {
+ return mProvider;
+ }
+
+ MediaRouteProvider getProviderInstance()
+ {
+ return mProvider.getProviderInstance();
+ }
+
+ public int getVolume()
+ {
+ return mVolume;
+ }
+
+ public int getVolumeHandling()
+ {
+ return mVolumeHandling;
+ }
+
+ public int getVolumeMax()
+ {
+ return mVolumeMax;
+ }
+
+ public boolean isConnecting()
+ {
+ return mConnecting;
+ }
+
+ public boolean isDefault()
+ {
+ MediaRouter.checkCallingThread();
+ boolean flag;
+ if(MediaRouter.sGlobal.getDefaultRoute() == this)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ public boolean isEnabled()
+ {
+ return mEnabled;
+ }
+
+ public boolean isSelected()
+ {
+ MediaRouter.checkCallingThread();
+ boolean flag;
+ if(MediaRouter.sGlobal.getSelectedRoute() == this)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ public boolean matchesSelector(MediaRouteSelector mediarouteselector)
+ {
+ if(mediarouteselector == null)
+ {
+ throw new IllegalArgumentException("selector must not be null");
+ } else
+ {
+ MediaRouter.checkCallingThread();
+ return mediarouteselector.matchesControlFilters(mControlFilters);
+ }
+ }
+
+ public void requestSetVolume(int i)
+ {
+ MediaRouter.checkCallingThread();
+ MediaRouter.sGlobal.requestSetVolume(this, Math.min(mVolumeMax, Math.max(0, i)));
+ }
+
+ public void requestUpdateVolume(int i)
+ {
+ MediaRouter.checkCallingThread();
+ if(i != 0)
+ MediaRouter.sGlobal.requestUpdateVolume(this, i);
+ }
+
+ public void select()
+ {
+ MediaRouter.checkCallingThread();
+ MediaRouter.sGlobal.selectRoute(this);
+ }
+
+ public void sendControlRequest(Intent intent, ControlRequestCallback controlrequestcallback)
+ {
+ if(intent == null)
+ {
+ throw new IllegalArgumentException("intent must not be null");
+ } else
+ {
+ MediaRouter.checkCallingThread();
+ MediaRouter.sGlobal.sendControlRequest(this, intent, controlrequestcallback);
+ return;
+ }
+ }
+
+ public boolean supportsControlAction(String s, String s1)
+ {
+ int i;
+ int j;
+ if(s == null)
+ throw new IllegalArgumentException("category must not be null");
+ if(s1 == null)
+ throw new IllegalArgumentException("action must not be null");
+ MediaRouter.checkCallingThread();
+ i = mControlFilters.size();
+ j = 0;
+_L3:
+ IntentFilter intentfilter;
+ if(j >= i)
+ break MISSING_BLOCK_LABEL_92;
+ intentfilter = (IntentFilter)mControlFilters.get(j);
+ if(!intentfilter.hasCategory(s) || !intentfilter.hasAction(s1)) goto _L2; else goto _L1
+_L1:
+ boolean flag = true;
+_L4:
+ return flag;
+_L2:
+ j++;
+ goto _L3
+ flag = false;
+ goto _L4
+ }
+
+ public boolean supportsControlCategory(String s)
+ {
+ int i;
+ int j;
+ if(s == null)
+ throw new IllegalArgumentException("category must not be null");
+ MediaRouter.checkCallingThread();
+ i = mControlFilters.size();
+ j = 0;
+_L3:
+ if(j >= i)
+ break MISSING_BLOCK_LABEL_62;
+ if(!((IntentFilter)mControlFilters.get(j)).hasCategory(s)) goto _L2; else goto _L1
+_L1:
+ boolean flag = true;
+_L4:
+ return flag;
+_L2:
+ j++;
+ goto _L3
+ flag = false;
+ goto _L4
+ }
+
+ public boolean supportsControlRequest(Intent intent)
+ {
+ ContentResolver contentresolver;
+ int i;
+ int j;
+ if(intent == null)
+ throw new IllegalArgumentException("intent must not be null");
+ MediaRouter.checkCallingThread();
+ contentresolver = MediaRouter.sGlobal.getContentResolver();
+ i = mControlFilters.size();
+ j = 0;
+_L3:
+ if(j >= i)
+ break MISSING_BLOCK_LABEL_76;
+ if(((IntentFilter)mControlFilters.get(j)).match(contentresolver, intent, true, "MediaRouter") < 0) goto _L2; else goto _L1
+_L1:
+ boolean flag = true;
+_L4:
+ return flag;
+_L2:
+ j++;
+ goto _L3
+ flag = false;
+ goto _L4
+ }
+
+ public String toString()
+ {
+ return (new StringBuilder()).append("MediaRouter.RouteInfo{ uniqueId=").append(mUniqueId).append(", name=").append(mName).append(", description=").append(mDescription).append(", enabled=").append(mEnabled).append(", connecting=").append(mConnecting).append(", playbackType=").append(mPlaybackType).append(", playbackStream=").append(mPlaybackStream).append(", volumeHandling=").append(mVolumeHandling).append(", volume=").append(mVolume).append(", volumeMax=").append(mVolumeMax).append(", presentationDisplayId=").append(mPresentationDisplayId).append(", extras=").append(mExtras).append(", providerPackageName=").append(mProvider.getPackageName()).append(" }").toString();
+ }
+
+ int updateDescriptor(MediaRouteDescriptor mediaroutedescriptor)
+ {
+ int i = 0;
+ if(mDescriptor != mediaroutedescriptor)
+ {
+ mDescriptor = mediaroutedescriptor;
+ if(mediaroutedescriptor != null)
+ {
+ if(!MediaRouter.equal(mName, mediaroutedescriptor.getName()))
+ {
+ mName = mediaroutedescriptor.getName();
+ i = false | true;
+ }
+ if(!MediaRouter.equal(mDescription, mediaroutedescriptor.getDescription()))
+ {
+ mDescription = mediaroutedescriptor.getDescription();
+ i |= 1;
+ }
+ if(mEnabled != mediaroutedescriptor.isEnabled())
+ {
+ mEnabled = mediaroutedescriptor.isEnabled();
+ i |= 1;
+ }
+ if(mConnecting != mediaroutedescriptor.isConnecting())
+ {
+ mConnecting = mediaroutedescriptor.isConnecting();
+ i |= 1;
+ }
+ if(!mControlFilters.equals(mediaroutedescriptor.getControlFilters()))
+ {
+ mControlFilters.clear();
+ mControlFilters.addAll(mediaroutedescriptor.getControlFilters());
+ i |= 1;
+ }
+ if(mPlaybackType != mediaroutedescriptor.getPlaybackType())
+ {
+ mPlaybackType = mediaroutedescriptor.getPlaybackType();
+ i |= 1;
+ }
+ if(mPlaybackStream != mediaroutedescriptor.getPlaybackStream())
+ {
+ mPlaybackStream = mediaroutedescriptor.getPlaybackStream();
+ i |= 1;
+ }
+ if(mVolumeHandling != mediaroutedescriptor.getVolumeHandling())
+ {
+ mVolumeHandling = mediaroutedescriptor.getVolumeHandling();
+ i |= 3;
+ }
+ if(mVolume != mediaroutedescriptor.getVolume())
+ {
+ mVolume = mediaroutedescriptor.getVolume();
+ i |= 3;
+ }
+ if(mVolumeMax != mediaroutedescriptor.getVolumeMax())
+ {
+ mVolumeMax = mediaroutedescriptor.getVolumeMax();
+ i |= 3;
+ }
+ if(mPresentationDisplayId != mediaroutedescriptor.getPresentationDisplayId())
+ {
+ mPresentationDisplayId = mediaroutedescriptor.getPresentationDisplayId();
+ mPresentationDisplay = null;
+ i |= 5;
+ }
+ if(!MediaRouter.equal(mExtras, mediaroutedescriptor.getExtras()))
+ {
+ mExtras = mediaroutedescriptor.getExtras();
+ i |= 1;
+ }
+ }
+ }
+ return i;
+ }
+
+ static final int CHANGE_GENERAL = 1;
+ static final int CHANGE_PRESENTATION_DISPLAY = 4;
+ static final int CHANGE_VOLUME = 2;
+ public static final int PLAYBACK_TYPE_LOCAL = 0;
+ public static final int PLAYBACK_TYPE_REMOTE = 1;
+ public static final int PLAYBACK_VOLUME_FIXED = 0;
+ public static final int PLAYBACK_VOLUME_VARIABLE = 1;
+ private boolean mConnecting;
+ private final ArrayList mControlFilters = new ArrayList();
+ private String mDescription;
+ private MediaRouteDescriptor mDescriptor;
+ private final String mDescriptorId;
+ private boolean mEnabled;
+ private Bundle mExtras;
+ private String mName;
+ private int mPlaybackStream;
+ private int mPlaybackType;
+ private Display mPresentationDisplay;
+ private int mPresentationDisplayId;
+ private final ProviderInfo mProvider;
+ private final String mUniqueId;
+ private int mVolume;
+ private int mVolumeHandling;
+ private int mVolumeMax;
+
+
+
+
+
+ RouteInfo(ProviderInfo providerinfo, String s, String s1)
+ {
+ mPresentationDisplayId = -1;
+ mProvider = providerinfo;
+ mDescriptorId = s;
+ mUniqueId = s1;
+ }
+ }
+
+ private static interface CallbackFlags
+ extends Annotation
+ {
+ }
+
+
+ MediaRouter(Context context)
+ {
+ mContext = context;
+ }
+
+ static void checkCallingThread()
+ {
+ if(Looper.myLooper() != Looper.getMainLooper())
+ throw new IllegalStateException("The media router service must only be accessed on the application's main thread.");
+ else
+ return;
+ }
+
+ static boolean equal(Object obj, Object obj1)
+ {
+ boolean flag;
+ if(obj == obj1 || obj != null && obj1 != null && obj.equals(obj1))
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ private int findCallbackRecord(Callback callback)
+ {
+ int i;
+ int j;
+ i = mCallbackRecords.size();
+ j = 0;
+_L3:
+ if(j >= i)
+ break MISSING_BLOCK_LABEL_41;
+ if(((CallbackRecord)mCallbackRecords.get(j)).mCallback != callback) goto _L2; else goto _L1
+_L1:
+ return j;
+_L2:
+ j++;
+ goto _L3
+ j = -1;
+ goto _L1
+ }
+
+ public static MediaRouter getInstance(Context context)
+ {
+ if(context == null)
+ throw new IllegalArgumentException("context must not be null");
+ checkCallingThread();
+ if(sGlobal == null)
+ {
+ sGlobal = new GlobalMediaRouter(context.getApplicationContext());
+ sGlobal.start();
+ }
+ return sGlobal.getRouter(context);
+ }
+
+ public void addCallback(MediaRouteSelector mediarouteselector, Callback callback)
+ {
+ addCallback(mediarouteselector, callback, 0);
+ }
+
+ public void addCallback(MediaRouteSelector mediarouteselector, Callback callback, int i)
+ {
+ if(mediarouteselector == null)
+ throw new IllegalArgumentException("selector must not be null");
+ if(callback == null)
+ throw new IllegalArgumentException("callback must not be null");
+ checkCallingThread();
+ if(DEBUG)
+ Log.d("MediaRouter", (new StringBuilder()).append("addCallback: selector=").append(mediarouteselector).append(", callback=").append(callback).append(", flags=").append(Integer.toHexString(i)).toString());
+ int j = findCallbackRecord(callback);
+ CallbackRecord callbackrecord;
+ boolean flag;
+ if(j < 0)
+ {
+ callbackrecord = new CallbackRecord(this, callback);
+ mCallbackRecords.add(callbackrecord);
+ } else
+ {
+ callbackrecord = (CallbackRecord)mCallbackRecords.get(j);
+ }
+ flag = false;
+ if((i & (-1 ^ callbackrecord.mFlags)) != 0)
+ {
+ callbackrecord.mFlags = i | callbackrecord.mFlags;
+ flag = true;
+ }
+ if(!callbackrecord.mSelector.contains(mediarouteselector))
+ {
+ callbackrecord.mSelector = (new MediaRouteSelector.Builder(callbackrecord.mSelector)).addSelector(mediarouteselector).build();
+ flag = true;
+ }
+ if(flag)
+ sGlobal.updateDiscoveryRequest();
+ }
+
+ public void addProvider(MediaRouteProvider mediarouteprovider)
+ {
+ if(mediarouteprovider == null)
+ throw new IllegalArgumentException("providerInstance must not be null");
+ checkCallingThread();
+ if(DEBUG)
+ Log.d("MediaRouter", (new StringBuilder()).append("addProvider: ").append(mediarouteprovider).toString());
+ sGlobal.addProvider(mediarouteprovider);
+ }
+
+ public void addRemoteControlClient(Object obj)
+ {
+ if(obj == null)
+ throw new IllegalArgumentException("remoteControlClient must not be null");
+ checkCallingThread();
+ if(DEBUG)
+ Log.d("MediaRouter", (new StringBuilder()).append("addRemoteControlClient: ").append(obj).toString());
+ sGlobal.addRemoteControlClient(obj);
+ }
+
+ public RouteInfo getDefaultRoute()
+ {
+ checkCallingThread();
+ return sGlobal.getDefaultRoute();
+ }
+
+ public List getProviders()
+ {
+ checkCallingThread();
+ return sGlobal.getProviders();
+ }
+
+ public List getRoutes()
+ {
+ checkCallingThread();
+ return sGlobal.getRoutes();
+ }
+
+ public RouteInfo getSelectedRoute()
+ {
+ checkCallingThread();
+ return sGlobal.getSelectedRoute();
+ }
+
+ public boolean isRouteAvailable(MediaRouteSelector mediarouteselector, int i)
+ {
+ if(mediarouteselector == null)
+ {
+ throw new IllegalArgumentException("selector must not be null");
+ } else
+ {
+ checkCallingThread();
+ return sGlobal.isRouteAvailable(mediarouteselector, i);
+ }
+ }
+
+ public void removeCallback(Callback callback)
+ {
+ if(callback == null)
+ throw new IllegalArgumentException("callback must not be null");
+ checkCallingThread();
+ if(DEBUG)
+ Log.d("MediaRouter", (new StringBuilder()).append("removeCallback: callback=").append(callback).toString());
+ int i = findCallbackRecord(callback);
+ if(i >= 0)
+ {
+ mCallbackRecords.remove(i);
+ sGlobal.updateDiscoveryRequest();
+ }
+ }
+
+ public void removeProvider(MediaRouteProvider mediarouteprovider)
+ {
+ if(mediarouteprovider == null)
+ throw new IllegalArgumentException("providerInstance must not be null");
+ checkCallingThread();
+ if(DEBUG)
+ Log.d("MediaRouter", (new StringBuilder()).append("removeProvider: ").append(mediarouteprovider).toString());
+ sGlobal.removeProvider(mediarouteprovider);
+ }
+
+ public void removeRemoteControlClient(Object obj)
+ {
+ if(obj == null)
+ throw new IllegalArgumentException("remoteControlClient must not be null");
+ if(DEBUG)
+ Log.d("MediaRouter", (new StringBuilder()).append("removeRemoteControlClient: ").append(obj).toString());
+ sGlobal.removeRemoteControlClient(obj);
+ }
+
+ public void selectRoute(RouteInfo routeinfo)
+ {
+ if(routeinfo == null)
+ throw new IllegalArgumentException("route must not be null");
+ checkCallingThread();
+ if(DEBUG)
+ Log.d("MediaRouter", (new StringBuilder()).append("selectRoute: ").append(routeinfo).toString());
+ sGlobal.selectRoute(routeinfo);
+ }
+
+ public void setMediaSession(Object obj)
+ {
+ if(DEBUG)
+ Log.d("MediaRouter", (new StringBuilder()).append("addMediaSession: ").append(obj).toString());
+ sGlobal.setMediaSession(obj);
+ }
+
+ public RouteInfo updateSelectedRoute(MediaRouteSelector mediarouteselector)
+ {
+ if(mediarouteselector == null)
+ throw new IllegalArgumentException("selector must not be null");
+ checkCallingThread();
+ if(DEBUG)
+ Log.d("MediaRouter", (new StringBuilder()).append("updateSelectedRoute: ").append(mediarouteselector).toString());
+ RouteInfo routeinfo = sGlobal.getSelectedRoute();
+ if(!routeinfo.isDefault() && !routeinfo.matchesSelector(mediarouteselector))
+ {
+ routeinfo = sGlobal.getDefaultRoute();
+ sGlobal.selectRoute(routeinfo);
+ }
+ return routeinfo;
+ }
+
+ public static final int AVAILABILITY_FLAG_IGNORE_DEFAULT_ROUTE = 1;
+ public static final int AVAILABILITY_FLAG_REQUIRE_MATCH = 2;
+ public static final int CALLBACK_FLAG_FORCE_DISCOVERY = 8;
+ public static final int CALLBACK_FLAG_PERFORM_ACTIVE_SCAN = 1;
+ public static final int CALLBACK_FLAG_REQUEST_DISCOVERY = 4;
+ public static final int CALLBACK_FLAG_UNFILTERED_EVENTS = 2;
+ private static final boolean DEBUG = Log.isLoggable("MediaRouter", 3);
+ private static final String TAG = "MediaRouter";
+ static GlobalMediaRouter sGlobal;
+ final ArrayList mCallbackRecords = new ArrayList();
+ final Context mContext;
+
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouterJellybean.java b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouterJellybean.java
new file mode 100644
index 0000000..3254c61
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouterJellybean.java
@@ -0,0 +1,493 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v7.media;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.media.MediaRouter;
+import android.media.RemoteControlClient;
+import android.util.Log;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+
+final class MediaRouterJellybean
+{
+ static class VolumeCallbackProxy extends android.media.MediaRouter.VolumeCallback
+ {
+
+ public void onVolumeSetRequest(android.media.MediaRouter.RouteInfo routeinfo, int i)
+ {
+ mCallback.onVolumeSetRequest(routeinfo, i);
+ }
+
+ public void onVolumeUpdateRequest(android.media.MediaRouter.RouteInfo routeinfo, int i)
+ {
+ mCallback.onVolumeUpdateRequest(routeinfo, i);
+ }
+
+ protected final VolumeCallback mCallback;
+
+ public VolumeCallbackProxy(VolumeCallback volumecallback)
+ {
+ mCallback = volumecallback;
+ }
+ }
+
+ static class CallbackProxy extends android.media.MediaRouter.Callback
+ {
+
+ public void onRouteAdded(MediaRouter mediarouter, android.media.MediaRouter.RouteInfo routeinfo)
+ {
+ mCallback.onRouteAdded(routeinfo);
+ }
+
+ public void onRouteChanged(MediaRouter mediarouter, android.media.MediaRouter.RouteInfo routeinfo)
+ {
+ mCallback.onRouteChanged(routeinfo);
+ }
+
+ public void onRouteGrouped(MediaRouter mediarouter, android.media.MediaRouter.RouteInfo routeinfo, android.media.MediaRouter.RouteGroup routegroup, int i)
+ {
+ mCallback.onRouteGrouped(routeinfo, routegroup, i);
+ }
+
+ public void onRouteRemoved(MediaRouter mediarouter, android.media.MediaRouter.RouteInfo routeinfo)
+ {
+ mCallback.onRouteRemoved(routeinfo);
+ }
+
+ public void onRouteSelected(MediaRouter mediarouter, int i, android.media.MediaRouter.RouteInfo routeinfo)
+ {
+ mCallback.onRouteSelected(i, routeinfo);
+ }
+
+ public void onRouteUngrouped(MediaRouter mediarouter, android.media.MediaRouter.RouteInfo routeinfo, android.media.MediaRouter.RouteGroup routegroup)
+ {
+ mCallback.onRouteUngrouped(routeinfo, routegroup);
+ }
+
+ public void onRouteUnselected(MediaRouter mediarouter, int i, android.media.MediaRouter.RouteInfo routeinfo)
+ {
+ mCallback.onRouteUnselected(i, routeinfo);
+ }
+
+ public void onRouteVolumeChanged(MediaRouter mediarouter, android.media.MediaRouter.RouteInfo routeinfo)
+ {
+ mCallback.onRouteVolumeChanged(routeinfo);
+ }
+
+ protected final Callback mCallback;
+
+ public CallbackProxy(Callback callback)
+ {
+ mCallback = callback;
+ }
+ }
+
+ public static final class GetDefaultRouteWorkaround
+ {
+
+ public Object getDefaultRoute(Object obj)
+ {
+ MediaRouter mediarouter = (MediaRouter)obj;
+ if(mGetSystemAudioRouteMethod == null) goto _L2; else goto _L1
+_L1:
+ Object obj2 = mGetSystemAudioRouteMethod.invoke(mediarouter, new Object[0]);
+ Object obj1 = obj2;
+_L4:
+ return obj1;
+ InvocationTargetException invocationtargetexception;
+ invocationtargetexception;
+_L2:
+ obj1 = mediarouter.getRouteAt(0);
+ if(true) goto _L4; else goto _L3
+_L3:
+ IllegalAccessException illegalaccessexception;
+ illegalaccessexception;
+ goto _L2
+ }
+
+ private Method mGetSystemAudioRouteMethod;
+
+ public GetDefaultRouteWorkaround()
+ {
+ if(android.os.Build.VERSION.SDK_INT < 16 || android.os.Build.VERSION.SDK_INT > 17)
+ throw new UnsupportedOperationException();
+ mGetSystemAudioRouteMethod = android/media/MediaRouter.getMethod("getSystemAudioRoute", new Class[0]);
+_L2:
+ return;
+ NoSuchMethodException nosuchmethodexception;
+ nosuchmethodexception;
+ if(true) goto _L2; else goto _L1
+_L1:
+ }
+ }
+
+ public static final class SelectRouteWorkaround
+ {
+
+ public void selectRoute(Object obj, int i, Object obj1)
+ {
+ MediaRouter mediarouter;
+ android.media.MediaRouter.RouteInfo routeinfo;
+ mediarouter = (MediaRouter)obj;
+ routeinfo = (android.media.MediaRouter.RouteInfo)obj1;
+ if((0x800000 & routeinfo.getSupportedTypes()) != 0)
+ break MISSING_BLOCK_LABEL_79;
+ if(mSelectRouteIntMethod == null)
+ break MISSING_BLOCK_LABEL_105;
+ Method method = mSelectRouteIntMethod;
+ Object aobj[] = new Object[2];
+ aobj[0] = Integer.valueOf(i);
+ aobj[1] = routeinfo;
+ method.invoke(mediarouter, aobj);
+_L1:
+ return;
+ IllegalAccessException illegalaccessexception;
+ illegalaccessexception;
+ Log.w("MediaRouterJellybean", "Cannot programmatically select non-user route. Media routing may not work.", illegalaccessexception);
+_L2:
+ mediarouter.selectRoute(i, routeinfo);
+ goto _L1
+ InvocationTargetException invocationtargetexception;
+ invocationtargetexception;
+ Log.w("MediaRouterJellybean", "Cannot programmatically select non-user route. Media routing may not work.", invocationtargetexception);
+ goto _L2
+ Log.w("MediaRouterJellybean", "Cannot programmatically select non-user route because the platform is missing the selectRouteInt() method. Media routing may not work.");
+ goto _L2
+ }
+
+ private Method mSelectRouteIntMethod;
+
+ public SelectRouteWorkaround()
+ {
+ if(android.os.Build.VERSION.SDK_INT < 16 || android.os.Build.VERSION.SDK_INT > 17)
+ throw new UnsupportedOperationException();
+ Class aclass[] = new Class[2];
+ aclass[0] = Integer.TYPE;
+ aclass[1] = android/media/MediaRouter$RouteInfo;
+ mSelectRouteIntMethod = android/media/MediaRouter.getMethod("selectRouteInt", aclass);
+_L2:
+ return;
+ NoSuchMethodException nosuchmethodexception;
+ nosuchmethodexception;
+ if(true) goto _L2; else goto _L1
+_L1:
+ }
+ }
+
+ public static interface VolumeCallback
+ {
+
+ public abstract void onVolumeSetRequest(Object obj, int i);
+
+ public abstract void onVolumeUpdateRequest(Object obj, int i);
+ }
+
+ public static interface Callback
+ {
+
+ public abstract void onRouteAdded(Object obj);
+
+ public abstract void onRouteChanged(Object obj);
+
+ public abstract void onRouteGrouped(Object obj, Object obj1, int i);
+
+ public abstract void onRouteRemoved(Object obj);
+
+ public abstract void onRouteSelected(int i, Object obj);
+
+ public abstract void onRouteUngrouped(Object obj, Object obj1);
+
+ public abstract void onRouteUnselected(int i, Object obj);
+
+ public abstract void onRouteVolumeChanged(Object obj);
+ }
+
+ public static final class RouteCategory
+ {
+
+ public static CharSequence getName(Object obj, Context context)
+ {
+ return ((android.media.MediaRouter.RouteCategory)obj).getName(context);
+ }
+
+ public static List getRoutes(Object obj)
+ {
+ ArrayList arraylist = new ArrayList();
+ ((android.media.MediaRouter.RouteCategory)obj).getRoutes(arraylist);
+ return arraylist;
+ }
+
+ public static int getSupportedTypes(Object obj)
+ {
+ return ((android.media.MediaRouter.RouteCategory)obj).getSupportedTypes();
+ }
+
+ public static boolean isGroupable(Object obj)
+ {
+ return ((android.media.MediaRouter.RouteCategory)obj).isGroupable();
+ }
+
+ public RouteCategory()
+ {
+ }
+ }
+
+ public static final class UserRouteInfo
+ {
+
+ public static void setIconDrawable(Object obj, Drawable drawable)
+ {
+ ((android.media.MediaRouter.UserRouteInfo)obj).setIconDrawable(drawable);
+ }
+
+ public static void setName(Object obj, CharSequence charsequence)
+ {
+ ((android.media.MediaRouter.UserRouteInfo)obj).setName(charsequence);
+ }
+
+ public static void setPlaybackStream(Object obj, int i)
+ {
+ ((android.media.MediaRouter.UserRouteInfo)obj).setPlaybackStream(i);
+ }
+
+ public static void setPlaybackType(Object obj, int i)
+ {
+ ((android.media.MediaRouter.UserRouteInfo)obj).setPlaybackType(i);
+ }
+
+ public static void setRemoteControlClient(Object obj, Object obj1)
+ {
+ ((android.media.MediaRouter.UserRouteInfo)obj).setRemoteControlClient((RemoteControlClient)obj1);
+ }
+
+ public static void setStatus(Object obj, CharSequence charsequence)
+ {
+ ((android.media.MediaRouter.UserRouteInfo)obj).setStatus(charsequence);
+ }
+
+ public static void setVolume(Object obj, int i)
+ {
+ ((android.media.MediaRouter.UserRouteInfo)obj).setVolume(i);
+ }
+
+ public static void setVolumeCallback(Object obj, Object obj1)
+ {
+ ((android.media.MediaRouter.UserRouteInfo)obj).setVolumeCallback((android.media.MediaRouter.VolumeCallback)obj1);
+ }
+
+ public static void setVolumeHandling(Object obj, int i)
+ {
+ ((android.media.MediaRouter.UserRouteInfo)obj).setVolumeHandling(i);
+ }
+
+ public static void setVolumeMax(Object obj, int i)
+ {
+ ((android.media.MediaRouter.UserRouteInfo)obj).setVolumeMax(i);
+ }
+
+ public UserRouteInfo()
+ {
+ }
+ }
+
+ public static final class RouteGroup
+ {
+
+ public static List getGroupedRoutes(Object obj)
+ {
+ android.media.MediaRouter.RouteGroup routegroup = (android.media.MediaRouter.RouteGroup)obj;
+ int i = routegroup.getRouteCount();
+ ArrayList arraylist = new ArrayList(i);
+ for(int j = 0; j < i; j++)
+ arraylist.add(routegroup.getRouteAt(j));
+
+ return arraylist;
+ }
+
+ public RouteGroup()
+ {
+ }
+ }
+
+ public static final class RouteInfo
+ {
+
+ public static Object getCategory(Object obj)
+ {
+ return ((android.media.MediaRouter.RouteInfo)obj).getCategory();
+ }
+
+ public static Object getGroup(Object obj)
+ {
+ return ((android.media.MediaRouter.RouteInfo)obj).getGroup();
+ }
+
+ public static Drawable getIconDrawable(Object obj)
+ {
+ return ((android.media.MediaRouter.RouteInfo)obj).getIconDrawable();
+ }
+
+ public static CharSequence getName(Object obj, Context context)
+ {
+ return ((android.media.MediaRouter.RouteInfo)obj).getName(context);
+ }
+
+ public static int getPlaybackStream(Object obj)
+ {
+ return ((android.media.MediaRouter.RouteInfo)obj).getPlaybackStream();
+ }
+
+ public static int getPlaybackType(Object obj)
+ {
+ return ((android.media.MediaRouter.RouteInfo)obj).getPlaybackType();
+ }
+
+ public static CharSequence getStatus(Object obj)
+ {
+ return ((android.media.MediaRouter.RouteInfo)obj).getStatus();
+ }
+
+ public static int getSupportedTypes(Object obj)
+ {
+ return ((android.media.MediaRouter.RouteInfo)obj).getSupportedTypes();
+ }
+
+ public static Object getTag(Object obj)
+ {
+ return ((android.media.MediaRouter.RouteInfo)obj).getTag();
+ }
+
+ public static int getVolume(Object obj)
+ {
+ return ((android.media.MediaRouter.RouteInfo)obj).getVolume();
+ }
+
+ public static int getVolumeHandling(Object obj)
+ {
+ return ((android.media.MediaRouter.RouteInfo)obj).getVolumeHandling();
+ }
+
+ public static int getVolumeMax(Object obj)
+ {
+ return ((android.media.MediaRouter.RouteInfo)obj).getVolumeMax();
+ }
+
+ public static boolean isGroup(Object obj)
+ {
+ return obj instanceof android.media.MediaRouter.RouteGroup;
+ }
+
+ public static void requestSetVolume(Object obj, int i)
+ {
+ ((android.media.MediaRouter.RouteInfo)obj).requestSetVolume(i);
+ }
+
+ public static void requestUpdateVolume(Object obj, int i)
+ {
+ ((android.media.MediaRouter.RouteInfo)obj).requestUpdateVolume(i);
+ }
+
+ public static void setTag(Object obj, Object obj1)
+ {
+ ((android.media.MediaRouter.RouteInfo)obj).setTag(obj1);
+ }
+
+ public RouteInfo()
+ {
+ }
+ }
+
+
+ MediaRouterJellybean()
+ {
+ }
+
+ public static void addCallback(Object obj, int i, Object obj1)
+ {
+ ((MediaRouter)obj).addCallback(i, (android.media.MediaRouter.Callback)obj1);
+ }
+
+ public static void addUserRoute(Object obj, Object obj1)
+ {
+ ((MediaRouter)obj).addUserRoute((android.media.MediaRouter.UserRouteInfo)obj1);
+ }
+
+ public static Object createCallback(Callback callback)
+ {
+ return new CallbackProxy(callback);
+ }
+
+ public static Object createRouteCategory(Object obj, String s, boolean flag)
+ {
+ return ((MediaRouter)obj).createRouteCategory(s, flag);
+ }
+
+ public static Object createUserRoute(Object obj, Object obj1)
+ {
+ return ((MediaRouter)obj).createUserRoute((android.media.MediaRouter.RouteCategory)obj1);
+ }
+
+ public static Object createVolumeCallback(VolumeCallback volumecallback)
+ {
+ return new VolumeCallbackProxy(volumecallback);
+ }
+
+ public static List getCategories(Object obj)
+ {
+ MediaRouter mediarouter = (MediaRouter)obj;
+ int i = mediarouter.getCategoryCount();
+ ArrayList arraylist = new ArrayList(i);
+ for(int j = 0; j < i; j++)
+ arraylist.add(mediarouter.getCategoryAt(j));
+
+ return arraylist;
+ }
+
+ public static Object getMediaRouter(Context context)
+ {
+ return context.getSystemService("media_router");
+ }
+
+ public static List getRoutes(Object obj)
+ {
+ MediaRouter mediarouter = (MediaRouter)obj;
+ int i = mediarouter.getRouteCount();
+ ArrayList arraylist = new ArrayList(i);
+ for(int j = 0; j < i; j++)
+ arraylist.add(mediarouter.getRouteAt(j));
+
+ return arraylist;
+ }
+
+ public static Object getSelectedRoute(Object obj, int i)
+ {
+ return ((MediaRouter)obj).getSelectedRoute(i);
+ }
+
+ public static void removeCallback(Object obj, Object obj1)
+ {
+ ((MediaRouter)obj).removeCallback((android.media.MediaRouter.Callback)obj1);
+ }
+
+ public static void removeUserRoute(Object obj, Object obj1)
+ {
+ ((MediaRouter)obj).removeUserRoute((android.media.MediaRouter.UserRouteInfo)obj1);
+ }
+
+ public static void selectRoute(Object obj, int i, Object obj1)
+ {
+ ((MediaRouter)obj).selectRoute(i, (android.media.MediaRouter.RouteInfo)obj1);
+ }
+
+ public static final int ALL_ROUTE_TYPES = 0x800003;
+ public static final int ROUTE_TYPE_LIVE_AUDIO = 1;
+ public static final int ROUTE_TYPE_LIVE_VIDEO = 2;
+ public static final int ROUTE_TYPE_USER = 0x800000;
+ private static final String TAG = "MediaRouterJellybean";
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouterJellybeanMr1.java b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouterJellybeanMr1.java
new file mode 100644
index 0000000..40c77ae
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouterJellybeanMr1.java
@@ -0,0 +1,192 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v7.media;
+
+import android.content.Context;
+import android.hardware.display.DisplayManager;
+import android.media.MediaRouter;
+import android.os.Handler;
+import android.util.Log;
+import android.view.Display;
+import java.lang.reflect.*;
+
+final class MediaRouterJellybeanMr1
+{
+ static class CallbackProxy extends MediaRouterJellybean.CallbackProxy
+ {
+
+ public void onRoutePresentationDisplayChanged(MediaRouter mediarouter, android.media.MediaRouter.RouteInfo routeinfo)
+ {
+ ((Callback)mCallback).onRoutePresentationDisplayChanged(routeinfo);
+ }
+
+ public CallbackProxy(Callback callback)
+ {
+ super(callback);
+ }
+ }
+
+ public static final class IsConnectingWorkaround
+ {
+
+ public boolean isConnecting(Object obj)
+ {
+ android.media.MediaRouter.RouteInfo routeinfo = (android.media.MediaRouter.RouteInfo)obj;
+ if(mGetStatusCodeMethod == null) goto _L2; else goto _L1
+_L1:
+ int i;
+ int j;
+ i = ((Integer)mGetStatusCodeMethod.invoke(routeinfo, new Object[0])).intValue();
+ j = mStatusConnecting;
+ boolean flag;
+ if(i == j)
+ flag = true;
+ else
+ flag = false;
+_L4:
+ return flag;
+ InvocationTargetException invocationtargetexception;
+ invocationtargetexception;
+_L2:
+ flag = false;
+ if(true) goto _L4; else goto _L3
+_L3:
+ IllegalAccessException illegalaccessexception;
+ illegalaccessexception;
+ goto _L2
+ }
+
+ private Method mGetStatusCodeMethod;
+ private int mStatusConnecting;
+
+ public IsConnectingWorkaround()
+ {
+ if(android.os.Build.VERSION.SDK_INT != 17)
+ throw new UnsupportedOperationException();
+ mStatusConnecting = android/media/MediaRouter$RouteInfo.getField("STATUS_CONNECTING").getInt(null);
+ mGetStatusCodeMethod = android/media/MediaRouter$RouteInfo.getMethod("getStatusCode", new Class[0]);
+_L2:
+ return;
+ IllegalAccessException illegalaccessexception;
+ illegalaccessexception;
+ continue; /* Loop/switch isn't completed */
+ NoSuchMethodException nosuchmethodexception;
+ nosuchmethodexception;
+ continue; /* Loop/switch isn't completed */
+ NoSuchFieldException nosuchfieldexception;
+ nosuchfieldexception;
+ if(true) goto _L2; else goto _L1
+_L1:
+ }
+ }
+
+ public static final class ActiveScanWorkaround
+ implements Runnable
+ {
+
+ public void run()
+ {
+ if(mActivelyScanningWifiDisplays)
+ {
+ try
+ {
+ mScanWifiDisplaysMethod.invoke(mDisplayManager, new Object[0]);
+ }
+ catch(IllegalAccessException illegalaccessexception)
+ {
+ Log.w("MediaRouterJellybeanMr1", "Cannot scan for wifi displays.", illegalaccessexception);
+ }
+ catch(InvocationTargetException invocationtargetexception)
+ {
+ Log.w("MediaRouterJellybeanMr1", "Cannot scan for wifi displays.", invocationtargetexception);
+ }
+ mHandler.postDelayed(this, 15000L);
+ }
+ }
+
+ public void setActiveScanRouteTypes(int i)
+ {
+ if((i & 2) == 0) goto _L2; else goto _L1
+_L1:
+ if(!mActivelyScanningWifiDisplays)
+ if(mScanWifiDisplaysMethod != null)
+ {
+ mActivelyScanningWifiDisplays = true;
+ mHandler.post(this);
+ } else
+ {
+ Log.w("MediaRouterJellybeanMr1", "Cannot scan for wifi displays because the DisplayManager.scanWifiDisplays() method is not available on this device.");
+ }
+_L4:
+ return;
+_L2:
+ if(mActivelyScanningWifiDisplays)
+ {
+ mActivelyScanningWifiDisplays = false;
+ mHandler.removeCallbacks(this);
+ }
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ private static final int WIFI_DISPLAY_SCAN_INTERVAL = 15000;
+ private boolean mActivelyScanningWifiDisplays;
+ private final DisplayManager mDisplayManager;
+ private final Handler mHandler;
+ private Method mScanWifiDisplaysMethod;
+
+ public ActiveScanWorkaround(Context context, Handler handler)
+ {
+ if(android.os.Build.VERSION.SDK_INT != 17)
+ throw new UnsupportedOperationException();
+ mDisplayManager = (DisplayManager)context.getSystemService("display");
+ mHandler = handler;
+ mScanWifiDisplaysMethod = android/hardware/display/DisplayManager.getMethod("scanWifiDisplays", new Class[0]);
+_L2:
+ return;
+ NoSuchMethodException nosuchmethodexception;
+ nosuchmethodexception;
+ if(true) goto _L2; else goto _L1
+_L1:
+ }
+ }
+
+ public static interface Callback
+ extends MediaRouterJellybean.Callback
+ {
+
+ public abstract void onRoutePresentationDisplayChanged(Object obj);
+ }
+
+ public static final class RouteInfo
+ {
+
+ public static Display getPresentationDisplay(Object obj)
+ {
+ return ((android.media.MediaRouter.RouteInfo)obj).getPresentationDisplay();
+ }
+
+ public static boolean isEnabled(Object obj)
+ {
+ return ((android.media.MediaRouter.RouteInfo)obj).isEnabled();
+ }
+
+ public RouteInfo()
+ {
+ }
+ }
+
+
+ MediaRouterJellybeanMr1()
+ {
+ }
+
+ public static Object createCallback(Callback callback)
+ {
+ return new CallbackProxy(callback);
+ }
+
+ private static final String TAG = "MediaRouterJellybeanMr1";
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouterJellybeanMr2.java b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouterJellybeanMr2.java
new file mode 100644
index 0000000..04821c3
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaRouterJellybeanMr2.java
@@ -0,0 +1,56 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v7.media;
+
+import android.media.MediaRouter;
+
+final class MediaRouterJellybeanMr2
+{
+ public static final class UserRouteInfo
+ {
+
+ public static void setDescription(Object obj, CharSequence charsequence)
+ {
+ ((android.media.MediaRouter.UserRouteInfo)obj).setDescription(charsequence);
+ }
+
+ public UserRouteInfo()
+ {
+ }
+ }
+
+ public static final class RouteInfo
+ {
+
+ public static CharSequence getDescription(Object obj)
+ {
+ return ((android.media.MediaRouter.RouteInfo)obj).getDescription();
+ }
+
+ public static boolean isConnecting(Object obj)
+ {
+ return ((android.media.MediaRouter.RouteInfo)obj).isConnecting();
+ }
+
+ public RouteInfo()
+ {
+ }
+ }
+
+
+ MediaRouterJellybeanMr2()
+ {
+ }
+
+ public static void addCallback(Object obj, int i, Object obj1, int j)
+ {
+ ((MediaRouter)obj).addCallback(i, (android.media.MediaRouter.Callback)obj1, j);
+ }
+
+ public static Object getDefaultRoute(Object obj)
+ {
+ return ((MediaRouter)obj).getDefaultRoute();
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaSessionStatus.java b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaSessionStatus.java
new file mode 100644
index 0000000..9153335
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/MediaSessionStatus.java
@@ -0,0 +1,156 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v7.media;
+
+import android.os.Bundle;
+import android.os.SystemClock;
+import android.support.v4.util.TimeUtils;
+
+public final class MediaSessionStatus
+{
+ public static final class Builder
+ {
+
+ public MediaSessionStatus build()
+ {
+ return new MediaSessionStatus(mBundle);
+ }
+
+ public Builder setExtras(Bundle bundle)
+ {
+ mBundle.putBundle("extras", bundle);
+ return this;
+ }
+
+ public Builder setQueuePaused(boolean flag)
+ {
+ mBundle.putBoolean("queuePaused", flag);
+ return this;
+ }
+
+ public Builder setSessionState(int i)
+ {
+ mBundle.putInt("sessionState", i);
+ return this;
+ }
+
+ public Builder setTimestamp(long l)
+ {
+ mBundle.putLong("timestamp", l);
+ return this;
+ }
+
+ private final Bundle mBundle;
+
+ public Builder(int i)
+ {
+ mBundle = new Bundle();
+ setTimestamp(SystemClock.elapsedRealtime());
+ setSessionState(i);
+ }
+
+ public Builder(MediaSessionStatus mediasessionstatus)
+ {
+ if(mediasessionstatus == null)
+ {
+ throw new IllegalArgumentException("status must not be null");
+ } else
+ {
+ mBundle = new Bundle(mediasessionstatus.mBundle);
+ return;
+ }
+ }
+ }
+
+
+ private MediaSessionStatus(Bundle bundle)
+ {
+ mBundle = bundle;
+ }
+
+
+ public static MediaSessionStatus fromBundle(Bundle bundle)
+ {
+ MediaSessionStatus mediasessionstatus;
+ if(bundle != null)
+ mediasessionstatus = new MediaSessionStatus(bundle);
+ else
+ mediasessionstatus = null;
+ return mediasessionstatus;
+ }
+
+ private static String sessionStateToString(int i)
+ {
+ i;
+ JVM INSTR tableswitch 0 2: default 28
+ // 0 35
+ // 1 41
+ // 2 47;
+ goto _L1 _L2 _L3 _L4
+_L1:
+ String s = Integer.toString(i);
+_L6:
+ return s;
+_L2:
+ s = "active";
+ continue; /* Loop/switch isn't completed */
+_L3:
+ s = "ended";
+ continue; /* Loop/switch isn't completed */
+_L4:
+ s = "invalidated";
+ if(true) goto _L6; else goto _L5
+_L5:
+ }
+
+ public Bundle asBundle()
+ {
+ return mBundle;
+ }
+
+ public Bundle getExtras()
+ {
+ return mBundle.getBundle("extras");
+ }
+
+ public int getSessionState()
+ {
+ return mBundle.getInt("sessionState", 2);
+ }
+
+ public long getTimestamp()
+ {
+ return mBundle.getLong("timestamp");
+ }
+
+ public boolean isQueuePaused()
+ {
+ return mBundle.getBoolean("queuePaused");
+ }
+
+ public String toString()
+ {
+ StringBuilder stringbuilder = new StringBuilder();
+ stringbuilder.append("MediaSessionStatus{ ");
+ stringbuilder.append("timestamp=");
+ TimeUtils.formatDuration(SystemClock.elapsedRealtime() - getTimestamp(), stringbuilder);
+ stringbuilder.append(" ms ago");
+ stringbuilder.append(", sessionState=").append(sessionStateToString(getSessionState()));
+ stringbuilder.append(", queuePaused=").append(isQueuePaused());
+ stringbuilder.append(", extras=").append(getExtras());
+ stringbuilder.append(" }");
+ return stringbuilder.toString();
+ }
+
+ private static final String KEY_EXTRAS = "extras";
+ private static final String KEY_QUEUE_PAUSED = "queuePaused";
+ private static final String KEY_SESSION_STATE = "sessionState";
+ private static final String KEY_TIMESTAMP = "timestamp";
+ public static final int SESSION_STATE_ACTIVE = 0;
+ public static final int SESSION_STATE_ENDED = 1;
+ public static final int SESSION_STATE_INVALIDATED = 2;
+ private final Bundle mBundle;
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v7/media/RegisteredMediaRouteProvider.java b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/RegisteredMediaRouteProvider.java
new file mode 100644
index 0000000..74b5585
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/RegisteredMediaRouteProvider.java
@@ -0,0 +1,768 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v7.media;
+
+import android.content.*;
+import android.os.*;
+import android.util.Log;
+import android.util.SparseArray;
+import java.lang.ref.WeakReference;
+import java.util.ArrayList;
+import java.util.List;
+
+// Referenced classes of package android.support.v7.media:
+// MediaRouteProvider, MediaRouteProviderDescriptor, MediaRouteDescriptor, MediaRouteProviderProtocol,
+// MediaRouteDiscoveryRequest
+
+final class RegisteredMediaRouteProvider extends MediaRouteProvider
+ implements ServiceConnection
+{
+ private static final class ReceiveHandler extends Handler
+ {
+
+ private boolean processMessage(Connection connection, int i, int j, int k, Object obj, Bundle bundle)
+ {
+ boolean flag = true;
+ i;
+ JVM INSTR tableswitch 0 5: default 44
+ // 0 50
+ // 1 59
+ // 2 68
+ // 3 125
+ // 4 153
+ // 5 98;
+ goto _L1 _L2 _L3 _L4 _L5 _L6 _L7
+_L1:
+ flag = false;
+_L8:
+ return flag;
+_L2:
+ connection.onGenericFailure(j);
+ goto _L8
+_L3:
+ connection.onGenericSuccess(j);
+ goto _L8
+_L4:
+ if(obj != null && !(obj instanceof Bundle)) goto _L1; else goto _L9
+_L9:
+ flag = connection.onRegistered(j, k, (Bundle)obj);
+ goto _L8
+_L7:
+ if(obj != null && !(obj instanceof Bundle)) goto _L1; else goto _L10
+_L10:
+ flag = connection.onDescriptorChanged((Bundle)obj);
+ goto _L8
+_L5:
+ if(obj != null && !(obj instanceof Bundle)) goto _L1; else goto _L11
+_L11:
+ flag = connection.onControlRequestSucceeded(j, (Bundle)obj);
+ goto _L8
+_L6:
+ if(obj != null && !(obj instanceof Bundle)) goto _L1; else goto _L12
+_L12:
+ String s;
+ if(bundle == null)
+ s = null;
+ else
+ s = bundle.getString("error");
+ flag = connection.onControlRequestFailed(j, s, (Bundle)obj);
+ goto _L8
+ }
+
+ public void dispose()
+ {
+ mConnectionRef.clear();
+ }
+
+ public void handleMessage(Message message)
+ {
+ Connection connection = (Connection)mConnectionRef.get();
+ if(connection != null && !processMessage(connection, message.what, message.arg1, message.arg2, message.obj, message.peekData()) && RegisteredMediaRouteProvider.DEBUG)
+ Log.d("MediaRouteProviderProxy", (new StringBuilder()).append("Unhandled message from server: ").append(message).toString());
+ }
+
+ private final WeakReference mConnectionRef;
+
+ public ReceiveHandler(Connection connection)
+ {
+ mConnectionRef = new WeakReference(connection);
+ }
+ }
+
+ private final class PrivateHandler extends Handler
+ {
+
+ final RegisteredMediaRouteProvider this$0;
+
+ private PrivateHandler()
+ {
+ this$0 = RegisteredMediaRouteProvider.this;
+ super();
+ }
+
+ }
+
+ private final class Connection
+ implements android.os.IBinder.DeathRecipient
+ {
+
+ private void failPendingCallbacks()
+ {
+ for(int i = 0; i < mPendingCallbacks.size(); i++)
+ ((MediaRouter.ControlRequestCallback)mPendingCallbacks.valueAt(i)).onError(null, null);
+
+ mPendingCallbacks.clear();
+ }
+
+ private boolean sendRequest(int i, int j, int k, Object obj, Bundle bundle)
+ {
+ Message message;
+ message = Message.obtain();
+ message.what = i;
+ message.arg1 = j;
+ message.arg2 = k;
+ message.obj = obj;
+ message.setData(bundle);
+ message.replyTo = mReceiveMessenger;
+ mServiceMessenger.send(message);
+ boolean flag = true;
+_L2:
+ return flag;
+ RemoteException remoteexception;
+ remoteexception;
+ if(i != 2)
+ Log.e("MediaRouteProviderProxy", "Could not send message to service.", remoteexception);
+_L3:
+ flag = false;
+ if(true) goto _L2; else goto _L1
+_L1:
+ DeadObjectException deadobjectexception;
+ deadobjectexception;
+ goto _L3
+ }
+
+ public void binderDied()
+ {
+ mPrivateHandler.post(new Runnable() {
+
+ public void run()
+ {
+ onConnectionDied(Connection.this);
+ }
+
+ final Connection this$1;
+
+
+ {
+ this$1 = Connection.this;
+ super();
+ }
+ }
+);
+ }
+
+ public int createRouteController(String s)
+ {
+ int i = mNextControllerId;
+ mNextControllerId = i + 1;
+ Bundle bundle = new Bundle();
+ bundle.putString("routeId", s);
+ int j = mNextRequestId;
+ mNextRequestId = j + 1;
+ sendRequest(3, j, i, null, bundle);
+ return i;
+ }
+
+ public void dispose()
+ {
+ sendRequest(2, 0, 0, null, null);
+ mReceiveHandler.dispose();
+ mServiceMessenger.getBinder().unlinkToDeath(this, 0);
+ mPrivateHandler.post(new Runnable() {
+
+ public void run()
+ {
+ failPendingCallbacks();
+ }
+
+ final Connection this$1;
+
+
+ {
+ this$1 = Connection.this;
+ super();
+ }
+ }
+);
+ }
+
+ public boolean onControlRequestFailed(int i, String s, Bundle bundle)
+ {
+ MediaRouter.ControlRequestCallback controlrequestcallback = (MediaRouter.ControlRequestCallback)mPendingCallbacks.get(i);
+ boolean flag;
+ if(controlrequestcallback != null)
+ {
+ mPendingCallbacks.remove(i);
+ controlrequestcallback.onError(s, bundle);
+ flag = true;
+ } else
+ {
+ flag = false;
+ }
+ return flag;
+ }
+
+ public boolean onControlRequestSucceeded(int i, Bundle bundle)
+ {
+ MediaRouter.ControlRequestCallback controlrequestcallback = (MediaRouter.ControlRequestCallback)mPendingCallbacks.get(i);
+ boolean flag;
+ if(controlrequestcallback != null)
+ {
+ mPendingCallbacks.remove(i);
+ controlrequestcallback.onResult(bundle);
+ flag = true;
+ } else
+ {
+ flag = false;
+ }
+ return flag;
+ }
+
+ public boolean onDescriptorChanged(Bundle bundle)
+ {
+ boolean flag;
+ if(mServiceVersion != 0)
+ {
+ onConnectionDescriptorChanged(this, MediaRouteProviderDescriptor.fromBundle(bundle));
+ flag = true;
+ } else
+ {
+ flag = false;
+ }
+ return flag;
+ }
+
+ public boolean onGenericFailure(int i)
+ {
+ if(i == mPendingRegisterRequestId)
+ {
+ mPendingRegisterRequestId = 0;
+ onConnectionError(this, "Registation failed");
+ }
+ MediaRouter.ControlRequestCallback controlrequestcallback = (MediaRouter.ControlRequestCallback)mPendingCallbacks.get(i);
+ if(controlrequestcallback != null)
+ {
+ mPendingCallbacks.remove(i);
+ controlrequestcallback.onError(null, null);
+ }
+ return true;
+ }
+
+ public boolean onGenericSuccess(int i)
+ {
+ return true;
+ }
+
+ public boolean onRegistered(int i, int j, Bundle bundle)
+ {
+ boolean flag = true;
+ if(mServiceVersion == 0 && i == mPendingRegisterRequestId && j >= flag)
+ {
+ mPendingRegisterRequestId = 0;
+ mServiceVersion = j;
+ onConnectionDescriptorChanged(this, MediaRouteProviderDescriptor.fromBundle(bundle));
+ onConnectionReady(this);
+ } else
+ {
+ flag = false;
+ }
+ return flag;
+ }
+
+ public boolean register()
+ {
+ boolean flag = true;
+ int i = mNextRequestId;
+ mNextRequestId = i + 1;
+ mPendingRegisterRequestId = i;
+ if(!sendRequest(flag, mPendingRegisterRequestId, flag, null, null))
+ flag = false;
+ else
+ try
+ {
+ mServiceMessenger.getBinder().linkToDeath(this, 0);
+ }
+ catch(RemoteException remoteexception)
+ {
+ binderDied();
+ flag = false;
+ }
+ return flag;
+ }
+
+ public void releaseRouteController(int i)
+ {
+ int j = mNextRequestId;
+ mNextRequestId = j + 1;
+ sendRequest(4, j, i, null, null);
+ }
+
+ public void selectRoute(int i)
+ {
+ int j = mNextRequestId;
+ mNextRequestId = j + 1;
+ sendRequest(5, j, i, null, null);
+ }
+
+ public boolean sendControlRequest(int i, Intent intent, MediaRouter.ControlRequestCallback controlrequestcallback)
+ {
+ int j = mNextRequestId;
+ mNextRequestId = j + 1;
+ boolean flag;
+ if(sendRequest(9, j, i, intent, null))
+ {
+ if(controlrequestcallback != null)
+ mPendingCallbacks.put(j, controlrequestcallback);
+ flag = true;
+ } else
+ {
+ flag = false;
+ }
+ return flag;
+ }
+
+ public void setDiscoveryRequest(MediaRouteDiscoveryRequest mediaroutediscoveryrequest)
+ {
+ int i = mNextRequestId;
+ mNextRequestId = i + 1;
+ Bundle bundle;
+ if(mediaroutediscoveryrequest != null)
+ bundle = mediaroutediscoveryrequest.asBundle();
+ else
+ bundle = null;
+ sendRequest(10, i, 0, bundle, null);
+ }
+
+ public void setVolume(int i, int j)
+ {
+ Bundle bundle = new Bundle();
+ bundle.putInt("volume", j);
+ int k = mNextRequestId;
+ mNextRequestId = k + 1;
+ sendRequest(7, k, i, null, bundle);
+ }
+
+ public void unselectRoute(int i)
+ {
+ int j = mNextRequestId;
+ mNextRequestId = j + 1;
+ sendRequest(6, j, i, null, null);
+ }
+
+ public void updateVolume(int i, int j)
+ {
+ Bundle bundle = new Bundle();
+ bundle.putInt("volume", j);
+ int k = mNextRequestId;
+ mNextRequestId = k + 1;
+ sendRequest(8, k, i, null, bundle);
+ }
+
+ private int mNextControllerId;
+ private int mNextRequestId;
+ private final SparseArray mPendingCallbacks = new SparseArray();
+ private int mPendingRegisterRequestId;
+ private final ReceiveHandler mReceiveHandler = new ReceiveHandler(this);
+ private final Messenger mReceiveMessenger;
+ private final Messenger mServiceMessenger;
+ private int mServiceVersion;
+ final RegisteredMediaRouteProvider this$0;
+
+
+ public Connection(Messenger messenger)
+ {
+ this$0 = RegisteredMediaRouteProvider.this;
+ super();
+ mNextRequestId = 1;
+ mNextControllerId = 1;
+ mServiceMessenger = messenger;
+ mReceiveMessenger = new Messenger(mReceiveHandler);
+ }
+ }
+
+ private final class Controller extends MediaRouteProvider.RouteController
+ {
+
+ public void attachConnection(Connection connection)
+ {
+ mConnection = connection;
+ mControllerId = connection.createRouteController(mRouteId);
+ if(mSelected)
+ {
+ connection.selectRoute(mControllerId);
+ if(mPendingSetVolume >= 0)
+ {
+ connection.setVolume(mControllerId, mPendingSetVolume);
+ mPendingSetVolume = -1;
+ }
+ if(mPendingUpdateVolumeDelta != 0)
+ {
+ connection.updateVolume(mControllerId, mPendingUpdateVolumeDelta);
+ mPendingUpdateVolumeDelta = 0;
+ }
+ }
+ }
+
+ public void detachConnection()
+ {
+ if(mConnection != null)
+ {
+ mConnection.releaseRouteController(mControllerId);
+ mConnection = null;
+ mControllerId = 0;
+ }
+ }
+
+ public boolean onControlRequest(Intent intent, MediaRouter.ControlRequestCallback controlrequestcallback)
+ {
+ boolean flag;
+ if(mConnection != null)
+ flag = mConnection.sendControlRequest(mControllerId, intent, controlrequestcallback);
+ else
+ flag = false;
+ return flag;
+ }
+
+ public void onRelease()
+ {
+ onControllerReleased(this);
+ }
+
+ public void onSelect()
+ {
+ mSelected = true;
+ if(mConnection != null)
+ mConnection.selectRoute(mControllerId);
+ }
+
+ public void onSetVolume(int i)
+ {
+ if(mConnection != null)
+ {
+ mConnection.setVolume(mControllerId, i);
+ } else
+ {
+ mPendingSetVolume = i;
+ mPendingUpdateVolumeDelta = 0;
+ }
+ }
+
+ public void onUnselect()
+ {
+ mSelected = false;
+ if(mConnection != null)
+ mConnection.unselectRoute(mControllerId);
+ }
+
+ public void onUpdateVolume(int i)
+ {
+ if(mConnection != null)
+ mConnection.updateVolume(mControllerId, i);
+ else
+ mPendingUpdateVolumeDelta = i + mPendingUpdateVolumeDelta;
+ }
+
+ private Connection mConnection;
+ private int mControllerId;
+ private int mPendingSetVolume;
+ private int mPendingUpdateVolumeDelta;
+ private final String mRouteId;
+ private boolean mSelected;
+ final RegisteredMediaRouteProvider this$0;
+
+ public Controller(String s)
+ {
+ this$0 = RegisteredMediaRouteProvider.this;
+ super();
+ mPendingSetVolume = -1;
+ mRouteId = s;
+ }
+ }
+
+
+ public RegisteredMediaRouteProvider(Context context, ComponentName componentname)
+ {
+ super(context, new MediaRouteProvider.ProviderMetadata(componentname));
+ mComponentName = componentname;
+ }
+
+ private void attachControllersToConnection()
+ {
+ int i = mControllers.size();
+ for(int j = 0; j < i; j++)
+ ((Controller)mControllers.get(j)).attachConnection(mActiveConnection);
+
+ }
+
+ private void bind()
+ {
+ Intent intent;
+ if(mBound)
+ break MISSING_BLOCK_LABEL_109;
+ if(DEBUG)
+ Log.d("MediaRouteProviderProxy", (new StringBuilder()).append(this).append(": Binding").toString());
+ intent = new Intent("android.media.MediaRouteProviderService");
+ intent.setComponent(mComponentName);
+ mBound = getContext().bindService(intent, this, 1);
+ if(!mBound && DEBUG)
+ Log.d("MediaRouteProviderProxy", (new StringBuilder()).append(this).append(": Bind failed").toString());
+_L1:
+ return;
+ SecurityException securityexception;
+ securityexception;
+ if(DEBUG)
+ Log.d("MediaRouteProviderProxy", (new StringBuilder()).append(this).append(": Bind failed").toString(), securityexception);
+ goto _L1
+ }
+
+ private void detachControllersFromConnection()
+ {
+ int i = mControllers.size();
+ for(int j = 0; j < i; j++)
+ ((Controller)mControllers.get(j)).detachConnection();
+
+ }
+
+ private void disconnect()
+ {
+ if(mActiveConnection != null)
+ {
+ setDescriptor(null);
+ mConnectionReady = false;
+ detachControllersFromConnection();
+ mActiveConnection.dispose();
+ mActiveConnection = null;
+ }
+ }
+
+ private void onConnectionDescriptorChanged(Connection connection, MediaRouteProviderDescriptor mediarouteproviderdescriptor)
+ {
+ if(mActiveConnection == connection)
+ {
+ if(DEBUG)
+ Log.d("MediaRouteProviderProxy", (new StringBuilder()).append(this).append(": Descriptor changed, descriptor=").append(mediarouteproviderdescriptor).toString());
+ setDescriptor(mediarouteproviderdescriptor);
+ }
+ }
+
+ private void onConnectionDied(Connection connection)
+ {
+ if(mActiveConnection == connection)
+ {
+ if(DEBUG)
+ Log.d("MediaRouteProviderProxy", (new StringBuilder()).append(this).append(": Service connection died").toString());
+ disconnect();
+ }
+ }
+
+ private void onConnectionError(Connection connection, String s)
+ {
+ if(mActiveConnection == connection)
+ {
+ if(DEBUG)
+ Log.d("MediaRouteProviderProxy", (new StringBuilder()).append(this).append(": Service connection error - ").append(s).toString());
+ unbind();
+ }
+ }
+
+ private void onConnectionReady(Connection connection)
+ {
+ if(mActiveConnection == connection)
+ {
+ mConnectionReady = true;
+ attachControllersToConnection();
+ MediaRouteDiscoveryRequest mediaroutediscoveryrequest = getDiscoveryRequest();
+ if(mediaroutediscoveryrequest != null)
+ mActiveConnection.setDiscoveryRequest(mediaroutediscoveryrequest);
+ }
+ }
+
+ private void onControllerReleased(Controller controller)
+ {
+ mControllers.remove(controller);
+ controller.detachConnection();
+ updateBinding();
+ }
+
+ private boolean shouldBind()
+ {
+ boolean flag;
+ flag = true;
+ break MISSING_BLOCK_LABEL_2;
+ if(!mStarted || getDiscoveryRequest() == null && mControllers.isEmpty())
+ flag = false;
+ return flag;
+ }
+
+ private void unbind()
+ {
+ if(mBound)
+ {
+ if(DEBUG)
+ Log.d("MediaRouteProviderProxy", (new StringBuilder()).append(this).append(": Unbinding").toString());
+ mBound = false;
+ disconnect();
+ getContext().unbindService(this);
+ }
+ }
+
+ private void updateBinding()
+ {
+ if(shouldBind())
+ bind();
+ else
+ unbind();
+ }
+
+ public boolean hasComponentName(String s, String s1)
+ {
+ boolean flag;
+ if(mComponentName.getPackageName().equals(s) && mComponentName.getClassName().equals(s1))
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ public MediaRouteProvider.RouteController onCreateRouteController(String s)
+ {
+ List list;
+ int i;
+ int j;
+ MediaRouteProviderDescriptor mediarouteproviderdescriptor = getDescriptor();
+ if(mediarouteproviderdescriptor == null)
+ break MISSING_BLOCK_LABEL_102;
+ list = mediarouteproviderdescriptor.getRoutes();
+ i = list.size();
+ j = 0;
+_L3:
+ if(j >= i)
+ break MISSING_BLOCK_LABEL_102;
+ if(!((MediaRouteDescriptor)list.get(j)).getId().equals(s)) goto _L2; else goto _L1
+_L1:
+ Controller controller;
+ controller = new Controller(s);
+ mControllers.add(controller);
+ if(mConnectionReady)
+ controller.attachConnection(mActiveConnection);
+ updateBinding();
+_L4:
+ return controller;
+_L2:
+ j++;
+ goto _L3
+ controller = null;
+ goto _L4
+ }
+
+ public void onDiscoveryRequestChanged(MediaRouteDiscoveryRequest mediaroutediscoveryrequest)
+ {
+ if(mConnectionReady)
+ mActiveConnection.setDiscoveryRequest(mediaroutediscoveryrequest);
+ updateBinding();
+ }
+
+ public void onServiceConnected(ComponentName componentname, IBinder ibinder)
+ {
+ if(DEBUG)
+ Log.d("MediaRouteProviderProxy", (new StringBuilder()).append(this).append(": Connected").toString());
+ if(!mBound) goto _L2; else goto _L1
+_L1:
+ disconnect();
+ Messenger messenger;
+ Connection connection;
+ if(ibinder != null)
+ messenger = new Messenger(ibinder);
+ else
+ messenger = null;
+ if(!MediaRouteProviderProtocol.isValidRemoteMessenger(messenger)) goto _L4; else goto _L3
+_L3:
+ connection = new Connection(messenger);
+ if(!connection.register()) goto _L6; else goto _L5
+_L5:
+ mActiveConnection = connection;
+_L2:
+ return;
+_L6:
+ if(DEBUG)
+ Log.d("MediaRouteProviderProxy", (new StringBuilder()).append(this).append(": Registration failed").toString());
+ continue; /* Loop/switch isn't completed */
+_L4:
+ Log.e("MediaRouteProviderProxy", (new StringBuilder()).append(this).append(": Service returned invalid messenger binder").toString());
+ if(true) goto _L2; else goto _L7
+_L7:
+ }
+
+ public void onServiceDisconnected(ComponentName componentname)
+ {
+ if(DEBUG)
+ Log.d("MediaRouteProviderProxy", (new StringBuilder()).append(this).append(": Service disconnected").toString());
+ disconnect();
+ }
+
+ public void rebindIfDisconnected()
+ {
+ if(mActiveConnection == null && shouldBind())
+ {
+ unbind();
+ bind();
+ }
+ }
+
+ public void start()
+ {
+ if(!mStarted)
+ {
+ if(DEBUG)
+ Log.d("MediaRouteProviderProxy", (new StringBuilder()).append(this).append(": Starting").toString());
+ mStarted = true;
+ updateBinding();
+ }
+ }
+
+ public void stop()
+ {
+ if(mStarted)
+ {
+ if(DEBUG)
+ Log.d("MediaRouteProviderProxy", (new StringBuilder()).append(this).append(": Stopping").toString());
+ mStarted = false;
+ updateBinding();
+ }
+ }
+
+ public String toString()
+ {
+ return (new StringBuilder()).append("Service connection ").append(mComponentName.flattenToShortString()).toString();
+ }
+
+ private static final boolean DEBUG = Log.isLoggable("MediaRouteProviderProxy", 3);
+ private static final String TAG = "MediaRouteProviderProxy";
+ private Connection mActiveConnection;
+ private boolean mBound;
+ private final ComponentName mComponentName;
+ private boolean mConnectionReady;
+ private final ArrayList mControllers = new ArrayList();
+ private final PrivateHandler mPrivateHandler = new PrivateHandler();
+ private boolean mStarted;
+
+
+
+
+
+
+
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v7/media/RegisteredMediaRouteProviderWatcher.java b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/RegisteredMediaRouteProviderWatcher.java
new file mode 100644
index 0000000..ec9cf5f
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/RegisteredMediaRouteProviderWatcher.java
@@ -0,0 +1,176 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v7.media;
+
+import android.content.*;
+import android.content.pm.*;
+import android.os.Handler;
+import java.util.*;
+
+// Referenced classes of package android.support.v7.media:
+// RegisteredMediaRouteProvider, MediaRouteProvider
+
+final class RegisteredMediaRouteProviderWatcher
+{
+ public static interface Callback
+ {
+
+ public abstract void addProvider(MediaRouteProvider mediarouteprovider);
+
+ public abstract void removeProvider(MediaRouteProvider mediarouteprovider);
+ }
+
+
+ public RegisteredMediaRouteProviderWatcher(Context context, Callback callback)
+ {
+ mContext = context;
+ mCallback = callback;
+ mPackageManager = context.getPackageManager();
+ }
+
+ private int findProvider(String s, String s1)
+ {
+ int i;
+ int j;
+ i = mProviders.size();
+ j = 0;
+_L3:
+ if(j >= i)
+ break MISSING_BLOCK_LABEL_46;
+ if(!((RegisteredMediaRouteProvider)mProviders.get(j)).hasComponentName(s, s1)) goto _L2; else goto _L1
+_L1:
+ return j;
+_L2:
+ j++;
+ goto _L3
+ j = -1;
+ goto _L1
+ }
+
+ private void scanPackages()
+ {
+ if(mRunning) goto _L2; else goto _L1
+_L1:
+ return;
+_L2:
+ int i = 0;
+ Intent intent = new Intent("android.media.MediaRouteProviderService");
+ Iterator iterator = mPackageManager.queryIntentServices(intent, 0).iterator();
+ do
+ {
+ if(!iterator.hasNext())
+ break;
+ ServiceInfo serviceinfo = ((ResolveInfo)iterator.next()).serviceInfo;
+ if(serviceinfo != null)
+ {
+ int k = findProvider(serviceinfo.packageName, serviceinfo.name);
+ if(k < 0)
+ {
+ RegisteredMediaRouteProvider registeredmediarouteprovider1 = new RegisteredMediaRouteProvider(mContext, new ComponentName(serviceinfo.packageName, serviceinfo.name));
+ registeredmediarouteprovider1.start();
+ ArrayList arraylist = mProviders;
+ int l = i + 1;
+ arraylist.add(i, registeredmediarouteprovider1);
+ mCallback.addProvider(registeredmediarouteprovider1);
+ i = l;
+ } else
+ if(k >= i)
+ {
+ RegisteredMediaRouteProvider registeredmediarouteprovider2 = (RegisteredMediaRouteProvider)mProviders.get(k);
+ registeredmediarouteprovider2.start();
+ registeredmediarouteprovider2.rebindIfDisconnected();
+ ArrayList arraylist1 = mProviders;
+ int i1 = i + 1;
+ Collections.swap(arraylist1, k, i);
+ i = i1;
+ }
+ }
+ } while(true);
+ if(i < mProviders.size())
+ {
+ int j = -1 + mProviders.size();
+ while(j >= i)
+ {
+ RegisteredMediaRouteProvider registeredmediarouteprovider = (RegisteredMediaRouteProvider)mProviders.get(j);
+ mCallback.removeProvider(registeredmediarouteprovider);
+ mProviders.remove(registeredmediarouteprovider);
+ registeredmediarouteprovider.stop();
+ j--;
+ }
+ }
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ public void start()
+ {
+ if(!mRunning)
+ {
+ mRunning = true;
+ IntentFilter intentfilter = new IntentFilter();
+ intentfilter.addAction("android.intent.action.PACKAGE_ADDED");
+ intentfilter.addAction("android.intent.action.PACKAGE_REMOVED");
+ intentfilter.addAction("android.intent.action.PACKAGE_CHANGED");
+ intentfilter.addAction("android.intent.action.PACKAGE_REPLACED");
+ intentfilter.addAction("android.intent.action.PACKAGE_RESTARTED");
+ intentfilter.addDataScheme("package");
+ mContext.registerReceiver(mScanPackagesReceiver, intentfilter, null, mHandler);
+ mHandler.post(mScanPackagesRunnable);
+ }
+ }
+
+ public void stop()
+ {
+ if(mRunning)
+ {
+ mRunning = false;
+ mContext.unregisterReceiver(mScanPackagesReceiver);
+ mHandler.removeCallbacks(mScanPackagesRunnable);
+ for(int i = -1 + mProviders.size(); i >= 0; i--)
+ ((RegisteredMediaRouteProvider)mProviders.get(i)).stop();
+
+ }
+ }
+
+ private final Callback mCallback;
+ private final Context mContext;
+ private final Handler mHandler = new Handler();
+ private final PackageManager mPackageManager;
+ private final ArrayList mProviders = new ArrayList();
+ private boolean mRunning;
+ private final BroadcastReceiver mScanPackagesReceiver = new BroadcastReceiver() {
+
+ public void onReceive(Context context1, Intent intent)
+ {
+ scanPackages();
+ }
+
+ final RegisteredMediaRouteProviderWatcher this$0;
+
+
+ {
+ this$0 = RegisteredMediaRouteProviderWatcher.this;
+ super();
+ }
+ }
+;
+ private final Runnable mScanPackagesRunnable = new Runnable() {
+
+ public void run()
+ {
+ scanPackages();
+ }
+
+ final RegisteredMediaRouteProviderWatcher this$0;
+
+
+ {
+ this$0 = RegisteredMediaRouteProviderWatcher.this;
+ super();
+ }
+ }
+;
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v7/media/RemoteControlClientCompat.java b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/RemoteControlClientCompat.java
new file mode 100644
index 0000000..3198518
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/RemoteControlClientCompat.java
@@ -0,0 +1,141 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v7.media;
+
+import android.content.Context;
+import java.lang.ref.WeakReference;
+
+// Referenced classes of package android.support.v7.media:
+// MediaRouterJellybean
+
+abstract class RemoteControlClientCompat
+{
+ static class JellybeanImpl extends RemoteControlClientCompat
+ {
+ private static final class VolumeCallbackWrapper
+ implements MediaRouterJellybean.VolumeCallback
+ {
+
+ public void onVolumeSetRequest(Object obj, int i)
+ {
+ JellybeanImpl jellybeanimpl = (JellybeanImpl)mImplWeak.get();
+ if(jellybeanimpl != null && jellybeanimpl.mVolumeCallback != null)
+ jellybeanimpl.mVolumeCallback.onVolumeSetRequest(i);
+ }
+
+ public void onVolumeUpdateRequest(Object obj, int i)
+ {
+ JellybeanImpl jellybeanimpl = (JellybeanImpl)mImplWeak.get();
+ if(jellybeanimpl != null && jellybeanimpl.mVolumeCallback != null)
+ jellybeanimpl.mVolumeCallback.onVolumeUpdateRequest(i);
+ }
+
+ private final WeakReference mImplWeak;
+
+ public VolumeCallbackWrapper(JellybeanImpl jellybeanimpl)
+ {
+ mImplWeak = new WeakReference(jellybeanimpl);
+ }
+ }
+
+
+ public void setPlaybackInfo(PlaybackInfo playbackinfo)
+ {
+ MediaRouterJellybean.UserRouteInfo.setVolume(mUserRouteObj, playbackinfo.volume);
+ MediaRouterJellybean.UserRouteInfo.setVolumeMax(mUserRouteObj, playbackinfo.volumeMax);
+ MediaRouterJellybean.UserRouteInfo.setVolumeHandling(mUserRouteObj, playbackinfo.volumeHandling);
+ MediaRouterJellybean.UserRouteInfo.setPlaybackStream(mUserRouteObj, playbackinfo.playbackStream);
+ MediaRouterJellybean.UserRouteInfo.setPlaybackType(mUserRouteObj, playbackinfo.playbackType);
+ if(!mRegistered)
+ {
+ mRegistered = true;
+ MediaRouterJellybean.UserRouteInfo.setVolumeCallback(mUserRouteObj, MediaRouterJellybean.createVolumeCallback(new VolumeCallbackWrapper(this)));
+ MediaRouterJellybean.UserRouteInfo.setRemoteControlClient(mUserRouteObj, mRcc);
+ }
+ }
+
+ private boolean mRegistered;
+ private final Object mRouterObj;
+ private final Object mUserRouteCategoryObj;
+ private final Object mUserRouteObj;
+
+ public JellybeanImpl(Context context, Object obj)
+ {
+ super(context, obj);
+ mRouterObj = MediaRouterJellybean.getMediaRouter(context);
+ mUserRouteCategoryObj = MediaRouterJellybean.createRouteCategory(mRouterObj, "", false);
+ mUserRouteObj = MediaRouterJellybean.createUserRoute(mRouterObj, mUserRouteCategoryObj);
+ }
+ }
+
+ static class LegacyImpl extends RemoteControlClientCompat
+ {
+
+ public LegacyImpl(Context context, Object obj)
+ {
+ super(context, obj);
+ }
+ }
+
+ public static interface VolumeCallback
+ {
+
+ public abstract void onVolumeSetRequest(int i);
+
+ public abstract void onVolumeUpdateRequest(int i);
+ }
+
+ public static final class PlaybackInfo
+ {
+
+ public int playbackStream;
+ public int playbackType;
+ public int volume;
+ public int volumeHandling;
+ public int volumeMax;
+
+ public PlaybackInfo()
+ {
+ volumeHandling = 0;
+ playbackStream = 3;
+ playbackType = 1;
+ }
+ }
+
+
+ protected RemoteControlClientCompat(Context context, Object obj)
+ {
+ mContext = context;
+ mRcc = obj;
+ }
+
+ public static RemoteControlClientCompat obtain(Context context, Object obj)
+ {
+ Object obj1;
+ if(android.os.Build.VERSION.SDK_INT >= 16)
+ obj1 = new JellybeanImpl(context, obj);
+ else
+ obj1 = new LegacyImpl(context, obj);
+ return ((RemoteControlClientCompat) (obj1));
+ }
+
+ public Object getRemoteControlClient()
+ {
+ return mRcc;
+ }
+
+ public void setPlaybackInfo(PlaybackInfo playbackinfo)
+ {
+ }
+
+ public void setVolumeCallback(VolumeCallback volumecallback)
+ {
+ mVolumeCallback = volumecallback;
+ }
+
+ protected final Context mContext;
+ protected final Object mRcc;
+ protected VolumeCallback mVolumeCallback;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v7/media/RemotePlaybackClient.java b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/RemotePlaybackClient.java
new file mode 100644
index 0000000..157ec5a
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/RemotePlaybackClient.java
@@ -0,0 +1,581 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v7.media;
+
+import android.app.PendingIntent;
+import android.content.*;
+import android.net.Uri;
+import android.os.Bundle;
+import android.util.Log;
+
+// Referenced classes of package android.support.v7.media:
+// MediaSessionStatus, MediaItemStatus
+
+public class RemotePlaybackClient
+{
+ public static abstract class SessionActionCallback extends ActionCallback
+ {
+
+ public void onResult(Bundle bundle, String s, MediaSessionStatus mediasessionstatus)
+ {
+ }
+
+ public SessionActionCallback()
+ {
+ }
+ }
+
+ public static abstract class ItemActionCallback extends ActionCallback
+ {
+
+ public void onResult(Bundle bundle, String s, MediaSessionStatus mediasessionstatus, String s1, MediaItemStatus mediaitemstatus)
+ {
+ }
+
+ public ItemActionCallback()
+ {
+ }
+ }
+
+ public static abstract class ActionCallback
+ {
+
+ public void onError(String s, int i, Bundle bundle)
+ {
+ }
+
+ public ActionCallback()
+ {
+ }
+ }
+
+ public static abstract class StatusCallback
+ {
+
+ public void onItemStatusChanged(Bundle bundle, String s, MediaSessionStatus mediasessionstatus, String s1, MediaItemStatus mediaitemstatus)
+ {
+ }
+
+ public void onSessionChanged(String s)
+ {
+ }
+
+ public void onSessionStatusChanged(Bundle bundle, String s, MediaSessionStatus mediasessionstatus)
+ {
+ }
+
+ public StatusCallback()
+ {
+ }
+ }
+
+ private final class StatusReceiver extends BroadcastReceiver
+ {
+
+ public void onReceive(Context context, Intent intent)
+ {
+ String s = intent.getStringExtra("android.media.intent.extra.SESSION_ID");
+ if(s != null && s.equals(mSessionId)) goto _L2; else goto _L1
+_L1:
+ Log.w("RemotePlaybackClient", (new StringBuilder()).append("Discarding spurious status callback with missing or invalid session id: sessionId=").append(s).toString());
+_L4:
+ return;
+_L2:
+ MediaSessionStatus mediasessionstatus = MediaSessionStatus.fromBundle(intent.getBundleExtra("android.media.intent.extra.SESSION_STATUS"));
+ String s1 = intent.getAction();
+ if(s1.equals("android.support.v7.media.actions.ACTION_ITEM_STATUS_CHANGED"))
+ {
+ String s2 = intent.getStringExtra("android.media.intent.extra.ITEM_ID");
+ if(s2 == null)
+ {
+ Log.w("RemotePlaybackClient", "Discarding spurious status callback with missing item id.");
+ } else
+ {
+ MediaItemStatus mediaitemstatus = MediaItemStatus.fromBundle(intent.getBundleExtra("android.media.intent.extra.ITEM_STATUS"));
+ if(mediaitemstatus == null)
+ {
+ Log.w("RemotePlaybackClient", "Discarding spurious status callback with missing item status.");
+ } else
+ {
+ if(RemotePlaybackClient.DEBUG)
+ Log.d("RemotePlaybackClient", (new StringBuilder()).append("Received item status callback: sessionId=").append(s).append(", sessionStatus=").append(mediasessionstatus).append(", itemId=").append(s2).append(", itemStatus=").append(mediaitemstatus).toString());
+ if(mStatusCallback != null)
+ mStatusCallback.onItemStatusChanged(intent.getExtras(), s, mediasessionstatus, s2, mediaitemstatus);
+ }
+ }
+ } else
+ if(s1.equals("android.support.v7.media.actions.ACTION_SESSION_STATUS_CHANGED"))
+ if(mediasessionstatus == null)
+ {
+ Log.w("RemotePlaybackClient", "Discarding spurious media status callback with missing session status.");
+ } else
+ {
+ if(RemotePlaybackClient.DEBUG)
+ Log.d("RemotePlaybackClient", (new StringBuilder()).append("Received session status callback: sessionId=").append(s).append(", sessionStatus=").append(mediasessionstatus).toString());
+ if(mStatusCallback != null)
+ mStatusCallback.onSessionStatusChanged(intent.getExtras(), s, mediasessionstatus);
+ }
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ public static final String ACTION_ITEM_STATUS_CHANGED = "android.support.v7.media.actions.ACTION_ITEM_STATUS_CHANGED";
+ public static final String ACTION_SESSION_STATUS_CHANGED = "android.support.v7.media.actions.ACTION_SESSION_STATUS_CHANGED";
+ final RemotePlaybackClient this$0;
+
+ private StatusReceiver()
+ {
+ this$0 = RemotePlaybackClient.this;
+ super();
+ }
+
+ }
+
+
+ public RemotePlaybackClient(Context context, MediaRouter.RouteInfo routeinfo)
+ {
+ if(context == null)
+ throw new IllegalArgumentException("context must not be null");
+ if(routeinfo == null)
+ {
+ throw new IllegalArgumentException("route must not be null");
+ } else
+ {
+ mContext = context;
+ mRoute = routeinfo;
+ IntentFilter intentfilter = new IntentFilter();
+ intentfilter.addAction("android.support.v7.media.actions.ACTION_ITEM_STATUS_CHANGED");
+ intentfilter.addAction("android.support.v7.media.actions.ACTION_SESSION_STATUS_CHANGED");
+ mStatusReceiver = new StatusReceiver();
+ context.registerReceiver(mStatusReceiver, intentfilter);
+ Intent intent = new Intent("android.support.v7.media.actions.ACTION_ITEM_STATUS_CHANGED");
+ intent.setPackage(context.getPackageName());
+ mItemStatusPendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
+ Intent intent1 = new Intent("android.support.v7.media.actions.ACTION_SESSION_STATUS_CHANGED");
+ intent1.setPackage(context.getPackageName());
+ mSessionStatusPendingIntent = PendingIntent.getBroadcast(context, 0, intent1, 0);
+ detectFeatures();
+ return;
+ }
+ }
+
+ private void adoptSession(String s)
+ {
+ if(s != null)
+ setSessionId(s);
+ }
+
+ private static String bundleToString(Bundle bundle)
+ {
+ String s;
+ if(bundle != null)
+ {
+ bundle.size();
+ s = bundle.toString();
+ } else
+ {
+ s = "null";
+ }
+ return s;
+ }
+
+ private void detectFeatures()
+ {
+ boolean flag = true;
+ boolean flag1;
+ boolean flag2;
+ if(routeSupportsAction("android.media.intent.action.PLAY") && routeSupportsAction("android.media.intent.action.SEEK") && routeSupportsAction("android.media.intent.action.GET_STATUS") && routeSupportsAction("android.media.intent.action.PAUSE") && routeSupportsAction("android.media.intent.action.RESUME") && routeSupportsAction("android.media.intent.action.STOP"))
+ flag1 = flag;
+ else
+ flag1 = false;
+ mRouteSupportsRemotePlayback = flag1;
+ if(mRouteSupportsRemotePlayback && routeSupportsAction("android.media.intent.action.ENQUEUE") && routeSupportsAction("android.media.intent.action.REMOVE"))
+ flag2 = flag;
+ else
+ flag2 = false;
+ mRouteSupportsQueuing = flag2;
+ if(!mRouteSupportsRemotePlayback || !routeSupportsAction("android.media.intent.action.START_SESSION") || !routeSupportsAction("android.media.intent.action.GET_SESSION_STATUS") || !routeSupportsAction("android.media.intent.action.END_SESSION"))
+ flag = false;
+ mRouteSupportsSessionManagement = flag;
+ }
+
+ private void handleError(Intent intent, ActionCallback actioncallback, String s, Bundle bundle)
+ {
+ int i;
+ if(bundle != null)
+ i = bundle.getInt("android.media.intent.extra.ERROR_CODE", 0);
+ else
+ i = 0;
+ if(DEBUG)
+ Log.w("RemotePlaybackClient", (new StringBuilder()).append("Received error from ").append(intent.getAction()).append(": error=").append(s).append(", code=").append(i).append(", data=").append(bundleToString(bundle)).toString());
+ actioncallback.onError(s, i, bundle);
+ }
+
+ private void handleInvalidResult(Intent intent, ActionCallback actioncallback, Bundle bundle)
+ {
+ Log.w("RemotePlaybackClient", (new StringBuilder()).append("Received invalid result data from ").append(intent.getAction()).append(": data=").append(bundleToString(bundle)).toString());
+ actioncallback.onError(null, 0, bundle);
+ }
+
+ private static String inferMissingResult(String s, String s1)
+ {
+ if(s1 != null)
+ if(s == null || s.equals(s1))
+ s = s1;
+ else
+ s = null;
+ return s;
+ }
+
+ private static void logRequest(Intent intent)
+ {
+ if(DEBUG)
+ Log.d("RemotePlaybackClient", (new StringBuilder()).append("Sending request: ").append(intent).toString());
+ }
+
+ private void performItemAction(final Intent intent, final String sessionId, final String itemId, Bundle bundle, final ItemActionCallback callback)
+ {
+ intent.addCategory("android.media.intent.category.REMOTE_PLAYBACK");
+ if(sessionId != null)
+ intent.putExtra("android.media.intent.extra.SESSION_ID", sessionId);
+ if(itemId != null)
+ intent.putExtra("android.media.intent.extra.ITEM_ID", itemId);
+ if(bundle != null)
+ intent.putExtras(bundle);
+ logRequest(intent);
+ mRoute.sendControlRequest(intent, new MediaRouter.ControlRequestCallback() {
+
+ public void onError(String s, Bundle bundle1)
+ {
+ handleError(intent, callback, s, bundle1);
+ }
+
+ public void onResult(Bundle bundle1)
+ {
+ if(bundle1 == null) goto _L2; else goto _L1
+_L1:
+ String s;
+ MediaSessionStatus mediasessionstatus;
+ String s1;
+ MediaItemStatus mediaitemstatus;
+ s = RemotePlaybackClient.inferMissingResult(sessionId, bundle1.getString("android.media.intent.extra.SESSION_ID"));
+ mediasessionstatus = MediaSessionStatus.fromBundle(bundle1.getBundle("android.media.intent.extra.SESSION_STATUS"));
+ s1 = RemotePlaybackClient.inferMissingResult(itemId, bundle1.getString("android.media.intent.extra.ITEM_ID"));
+ mediaitemstatus = MediaItemStatus.fromBundle(bundle1.getBundle("android.media.intent.extra.ITEM_STATUS"));
+ adoptSession(s);
+ if(s == null || s1 == null || mediaitemstatus == null) goto _L2; else goto _L3
+_L3:
+ if(RemotePlaybackClient.DEBUG)
+ Log.d("RemotePlaybackClient", (new StringBuilder()).append("Received result from ").append(intent.getAction()).append(": data=").append(RemotePlaybackClient.bundleToString(bundle1)).append(", sessionId=").append(s).append(", sessionStatus=").append(mediasessionstatus).append(", itemId=").append(s1).append(", itemStatus=").append(mediaitemstatus).toString());
+ callback.onResult(bundle1, s, mediasessionstatus, s1, mediaitemstatus);
+_L5:
+ return;
+_L2:
+ handleInvalidResult(intent, callback, bundle1);
+ if(true) goto _L5; else goto _L4
+_L4:
+ }
+
+ final RemotePlaybackClient this$0;
+ final ItemActionCallback val$callback;
+ final Intent val$intent;
+ final String val$itemId;
+ final String val$sessionId;
+
+
+ {
+ this$0 = RemotePlaybackClient.this;
+ sessionId = s;
+ itemId = s1;
+ intent = intent1;
+ callback = itemactioncallback;
+ super();
+ }
+ }
+);
+ }
+
+ private void performSessionAction(final Intent intent, final String sessionId, Bundle bundle, final SessionActionCallback callback)
+ {
+ intent.addCategory("android.media.intent.category.REMOTE_PLAYBACK");
+ if(sessionId != null)
+ intent.putExtra("android.media.intent.extra.SESSION_ID", sessionId);
+ if(bundle != null)
+ intent.putExtras(bundle);
+ logRequest(intent);
+ mRoute.sendControlRequest(intent, new MediaRouter.ControlRequestCallback() {
+
+ public void onError(String s, Bundle bundle1)
+ {
+ handleError(intent, callback, s, bundle1);
+ }
+
+ public void onResult(Bundle bundle1)
+ {
+ if(bundle1 == null) goto _L2; else goto _L1
+_L1:
+ String s;
+ MediaSessionStatus mediasessionstatus;
+ s = RemotePlaybackClient.inferMissingResult(sessionId, bundle1.getString("android.media.intent.extra.SESSION_ID"));
+ mediasessionstatus = MediaSessionStatus.fromBundle(bundle1.getBundle("android.media.intent.extra.SESSION_STATUS"));
+ adoptSession(s);
+ if(s == null) goto _L2; else goto _L3
+_L3:
+ if(RemotePlaybackClient.DEBUG)
+ Log.d("RemotePlaybackClient", (new StringBuilder()).append("Received result from ").append(intent.getAction()).append(": data=").append(RemotePlaybackClient.bundleToString(bundle1)).append(", sessionId=").append(s).append(", sessionStatus=").append(mediasessionstatus).toString());
+ callback.onResult(bundle1, s, mediasessionstatus);
+ if(intent.getAction().equals("android.media.intent.action.END_SESSION") && s.equals(mSessionId))
+ setSessionId(null);
+_L5:
+ return;
+ Exception exception;
+ exception;
+ if(intent.getAction().equals("android.media.intent.action.END_SESSION") && s.equals(mSessionId))
+ setSessionId(null);
+ throw exception;
+_L2:
+ handleInvalidResult(intent, callback, bundle1);
+ if(true) goto _L5; else goto _L4
+_L4:
+ }
+
+ final RemotePlaybackClient this$0;
+ final SessionActionCallback val$callback;
+ final Intent val$intent;
+ final String val$sessionId;
+
+
+ {
+ this$0 = RemotePlaybackClient.this;
+ sessionId = s;
+ intent = intent1;
+ callback = sessionactioncallback;
+ super();
+ }
+ }
+);
+ }
+
+ private void playOrEnqueue(Uri uri, String s, Bundle bundle, long l, Bundle bundle1, ItemActionCallback itemactioncallback,
+ String s1)
+ {
+ if(uri == null)
+ throw new IllegalArgumentException("contentUri must not be null");
+ throwIfRemotePlaybackNotSupported();
+ if(s1.equals("android.media.intent.action.ENQUEUE"))
+ throwIfQueuingNotSupported();
+ Intent intent = new Intent(s1);
+ intent.setDataAndType(uri, s);
+ intent.putExtra("android.media.intent.extra.ITEM_STATUS_UPDATE_RECEIVER", mItemStatusPendingIntent);
+ if(bundle != null)
+ intent.putExtra("android.media.intent.extra.ITEM_METADATA", bundle);
+ if(l != 0L)
+ intent.putExtra("android.media.intent.extra.ITEM_POSITION", l);
+ performItemAction(intent, mSessionId, null, bundle1, itemactioncallback);
+ }
+
+ private boolean routeSupportsAction(String s)
+ {
+ return mRoute.supportsControlAction("android.media.intent.category.REMOTE_PLAYBACK", s);
+ }
+
+ private void throwIfNoCurrentSession()
+ {
+ if(mSessionId == null)
+ throw new IllegalStateException("There is no current session.");
+ else
+ return;
+ }
+
+ private void throwIfQueuingNotSupported()
+ {
+ if(!mRouteSupportsQueuing)
+ throw new UnsupportedOperationException("The route does not support queuing.");
+ else
+ return;
+ }
+
+ private void throwIfRemotePlaybackNotSupported()
+ {
+ if(!mRouteSupportsRemotePlayback)
+ throw new UnsupportedOperationException("The route does not support remote playback.");
+ else
+ return;
+ }
+
+ private void throwIfSessionManagementNotSupported()
+ {
+ if(!mRouteSupportsSessionManagement)
+ throw new UnsupportedOperationException("The route does not support session management.");
+ else
+ return;
+ }
+
+ public void endSession(Bundle bundle, SessionActionCallback sessionactioncallback)
+ {
+ throwIfSessionManagementNotSupported();
+ throwIfNoCurrentSession();
+ performSessionAction(new Intent("android.media.intent.action.END_SESSION"), mSessionId, bundle, sessionactioncallback);
+ }
+
+ public void enqueue(Uri uri, String s, Bundle bundle, long l, Bundle bundle1, ItemActionCallback itemactioncallback)
+ {
+ playOrEnqueue(uri, s, bundle, l, bundle1, itemactioncallback, "android.media.intent.action.ENQUEUE");
+ }
+
+ public String getSessionId()
+ {
+ return mSessionId;
+ }
+
+ public void getSessionStatus(Bundle bundle, SessionActionCallback sessionactioncallback)
+ {
+ throwIfSessionManagementNotSupported();
+ throwIfNoCurrentSession();
+ performSessionAction(new Intent("android.media.intent.action.GET_SESSION_STATUS"), mSessionId, bundle, sessionactioncallback);
+ }
+
+ public void getStatus(String s, Bundle bundle, ItemActionCallback itemactioncallback)
+ {
+ if(s == null)
+ {
+ throw new IllegalArgumentException("itemId must not be null");
+ } else
+ {
+ throwIfNoCurrentSession();
+ performItemAction(new Intent("android.media.intent.action.GET_STATUS"), mSessionId, s, bundle, itemactioncallback);
+ return;
+ }
+ }
+
+ public boolean hasSession()
+ {
+ boolean flag;
+ if(mSessionId != null)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ public boolean isQueuingSupported()
+ {
+ return mRouteSupportsQueuing;
+ }
+
+ public boolean isRemotePlaybackSupported()
+ {
+ return mRouteSupportsRemotePlayback;
+ }
+
+ public boolean isSessionManagementSupported()
+ {
+ return mRouteSupportsSessionManagement;
+ }
+
+ public void pause(Bundle bundle, SessionActionCallback sessionactioncallback)
+ {
+ throwIfNoCurrentSession();
+ performSessionAction(new Intent("android.media.intent.action.PAUSE"), mSessionId, bundle, sessionactioncallback);
+ }
+
+ public void play(Uri uri, String s, Bundle bundle, long l, Bundle bundle1, ItemActionCallback itemactioncallback)
+ {
+ playOrEnqueue(uri, s, bundle, l, bundle1, itemactioncallback, "android.media.intent.action.PLAY");
+ }
+
+ public void release()
+ {
+ mContext.unregisterReceiver(mStatusReceiver);
+ }
+
+ public void remove(String s, Bundle bundle, ItemActionCallback itemactioncallback)
+ {
+ if(s == null)
+ {
+ throw new IllegalArgumentException("itemId must not be null");
+ } else
+ {
+ throwIfQueuingNotSupported();
+ throwIfNoCurrentSession();
+ performItemAction(new Intent("android.media.intent.action.REMOVE"), mSessionId, s, bundle, itemactioncallback);
+ return;
+ }
+ }
+
+ public void resume(Bundle bundle, SessionActionCallback sessionactioncallback)
+ {
+ throwIfNoCurrentSession();
+ performSessionAction(new Intent("android.media.intent.action.RESUME"), mSessionId, bundle, sessionactioncallback);
+ }
+
+ public void seek(String s, long l, Bundle bundle, ItemActionCallback itemactioncallback)
+ {
+ if(s == null)
+ {
+ throw new IllegalArgumentException("itemId must not be null");
+ } else
+ {
+ throwIfNoCurrentSession();
+ Intent intent = new Intent("android.media.intent.action.SEEK");
+ intent.putExtra("android.media.intent.extra.ITEM_POSITION", l);
+ performItemAction(intent, mSessionId, s, bundle, itemactioncallback);
+ return;
+ }
+ }
+
+ public void setSessionId(String s)
+ {
+ if(mSessionId != s && (mSessionId == null || !mSessionId.equals(s)))
+ {
+ if(DEBUG)
+ Log.d("RemotePlaybackClient", (new StringBuilder()).append("Session id is now: ").append(s).toString());
+ mSessionId = s;
+ if(mStatusCallback != null)
+ mStatusCallback.onSessionChanged(s);
+ }
+ }
+
+ public void setStatusCallback(StatusCallback statuscallback)
+ {
+ mStatusCallback = statuscallback;
+ }
+
+ public void startSession(Bundle bundle, SessionActionCallback sessionactioncallback)
+ {
+ throwIfSessionManagementNotSupported();
+ Intent intent = new Intent("android.media.intent.action.START_SESSION");
+ intent.putExtra("android.media.intent.extra.SESSION_STATUS_UPDATE_RECEIVER", mSessionStatusPendingIntent);
+ performSessionAction(intent, null, bundle, sessionactioncallback);
+ }
+
+ public void stop(Bundle bundle, SessionActionCallback sessionactioncallback)
+ {
+ throwIfNoCurrentSession();
+ performSessionAction(new Intent("android.media.intent.action.STOP"), mSessionId, bundle, sessionactioncallback);
+ }
+
+ private static final boolean DEBUG = Log.isLoggable("RemotePlaybackClient", 3);
+ private static final String TAG = "RemotePlaybackClient";
+ private final Context mContext;
+ private final PendingIntent mItemStatusPendingIntent;
+ private final MediaRouter.RouteInfo mRoute;
+ private boolean mRouteSupportsQueuing;
+ private boolean mRouteSupportsRemotePlayback;
+ private boolean mRouteSupportsSessionManagement;
+ private String mSessionId;
+ private final PendingIntent mSessionStatusPendingIntent;
+ private StatusCallback mStatusCallback;
+ private final StatusReceiver mStatusReceiver;
+
+
+
+
+
+
+
+
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v7/media/SystemMediaRouteProvider.java b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/SystemMediaRouteProvider.java
new file mode 100644
index 0000000..feac1bc
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v7/media/SystemMediaRouteProvider.java
@@ -0,0 +1,822 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v7.media;
+
+import android.content.*;
+import android.content.res.Resources;
+import android.media.AudioManager;
+import android.view.Display;
+import java.util.*;
+
+// Referenced classes of package android.support.v7.media:
+// MediaRouteProvider, MediaRouterJellybeanMr2, MediaRouterJellybean, MediaRouterJellybeanMr1,
+// MediaRouteDescriptor, MediaRouteDiscoveryRequest, MediaRouteSelector
+
+abstract class SystemMediaRouteProvider extends MediaRouteProvider
+{
+ private static class JellybeanMr2Impl extends JellybeanMr1Impl
+ {
+
+ protected Object getDefaultRoute()
+ {
+ return MediaRouterJellybeanMr2.getDefaultRoute(mRouterObj);
+ }
+
+ protected boolean isConnecting(JellybeanImpl.SystemRouteRecord systemrouterecord)
+ {
+ return MediaRouterJellybeanMr2.RouteInfo.isConnecting(systemrouterecord.mRouteObj);
+ }
+
+ protected void onBuildSystemRouteDescriptor(JellybeanImpl.SystemRouteRecord systemrouterecord, MediaRouteDescriptor.Builder builder)
+ {
+ super.onBuildSystemRouteDescriptor(systemrouterecord, builder);
+ CharSequence charsequence = MediaRouterJellybeanMr2.RouteInfo.getDescription(systemrouterecord.mRouteObj);
+ if(charsequence != null)
+ builder.setDescription(charsequence.toString());
+ }
+
+ protected void selectRoute(Object obj)
+ {
+ MediaRouterJellybean.selectRoute(mRouterObj, 0x800003, obj);
+ }
+
+ protected void updateCallback()
+ {
+ boolean flag = true;
+ if(mCallbackRegistered)
+ MediaRouterJellybean.removeCallback(mRouterObj, mCallbackObj);
+ mCallbackRegistered = flag;
+ Object obj = mRouterObj;
+ int i = mRouteTypes;
+ Object obj1 = mCallbackObj;
+ if(!mActiveScan)
+ flag = false;
+ MediaRouterJellybeanMr2.addCallback(obj, i, obj1, flag | 2);
+ }
+
+ protected void updateUserRouteProperties(JellybeanImpl.UserRouteRecord userrouterecord)
+ {
+ super.updateUserRouteProperties(userrouterecord);
+ MediaRouterJellybeanMr2.UserRouteInfo.setDescription(userrouterecord.mRouteObj, userrouterecord.mRoute.getDescription());
+ }
+
+ public JellybeanMr2Impl(Context context, SyncCallback synccallback)
+ {
+ super(context, synccallback);
+ }
+ }
+
+ private static class JellybeanMr1Impl extends JellybeanImpl
+ implements MediaRouterJellybeanMr1.Callback
+ {
+
+ protected Object createCallbackObj()
+ {
+ return MediaRouterJellybeanMr1.createCallback(this);
+ }
+
+ protected boolean isConnecting(JellybeanImpl.SystemRouteRecord systemrouterecord)
+ {
+ if(mIsConnectingWorkaround == null)
+ mIsConnectingWorkaround = new MediaRouterJellybeanMr1.IsConnectingWorkaround();
+ return mIsConnectingWorkaround.isConnecting(systemrouterecord.mRouteObj);
+ }
+
+ protected void onBuildSystemRouteDescriptor(JellybeanImpl.SystemRouteRecord systemrouterecord, MediaRouteDescriptor.Builder builder)
+ {
+ super.onBuildSystemRouteDescriptor(systemrouterecord, builder);
+ if(!MediaRouterJellybeanMr1.RouteInfo.isEnabled(systemrouterecord.mRouteObj))
+ builder.setEnabled(false);
+ if(isConnecting(systemrouterecord))
+ builder.setConnecting(true);
+ Display display = MediaRouterJellybeanMr1.RouteInfo.getPresentationDisplay(systemrouterecord.mRouteObj);
+ if(display != null)
+ builder.setPresentationDisplayId(display.getDisplayId());
+ }
+
+ public void onRoutePresentationDisplayChanged(Object obj)
+ {
+ int i = findSystemRouteRecord(obj);
+ if(i >= 0)
+ {
+ JellybeanImpl.SystemRouteRecord systemrouterecord = (JellybeanImpl.SystemRouteRecord)mSystemRouteRecords.get(i);
+ Display display = MediaRouterJellybeanMr1.RouteInfo.getPresentationDisplay(obj);
+ int j;
+ if(display != null)
+ j = display.getDisplayId();
+ else
+ j = -1;
+ if(j != systemrouterecord.mRouteDescriptor.getPresentationDisplayId())
+ {
+ systemrouterecord.mRouteDescriptor = (new MediaRouteDescriptor.Builder(systemrouterecord.mRouteDescriptor)).setPresentationDisplayId(j).build();
+ publishRoutes();
+ }
+ }
+ }
+
+ protected void updateCallback()
+ {
+ super.updateCallback();
+ if(mActiveScanWorkaround == null)
+ mActiveScanWorkaround = new MediaRouterJellybeanMr1.ActiveScanWorkaround(getContext(), getHandler());
+ MediaRouterJellybeanMr1.ActiveScanWorkaround activescanworkaround = mActiveScanWorkaround;
+ int i;
+ if(mActiveScan)
+ i = mRouteTypes;
+ else
+ i = 0;
+ activescanworkaround.setActiveScanRouteTypes(i);
+ }
+
+ private MediaRouterJellybeanMr1.ActiveScanWorkaround mActiveScanWorkaround;
+ private MediaRouterJellybeanMr1.IsConnectingWorkaround mIsConnectingWorkaround;
+
+ public JellybeanMr1Impl(Context context, SyncCallback synccallback)
+ {
+ super(context, synccallback);
+ }
+ }
+
+ static class JellybeanImpl extends SystemMediaRouteProvider
+ implements MediaRouterJellybean.Callback, MediaRouterJellybean.VolumeCallback
+ {
+ protected final class SystemRouteController extends MediaRouteProvider.RouteController
+ {
+
+ public void onSetVolume(int i)
+ {
+ MediaRouterJellybean.RouteInfo.requestSetVolume(mRouteObj, i);
+ }
+
+ public void onUpdateVolume(int i)
+ {
+ MediaRouterJellybean.RouteInfo.requestUpdateVolume(mRouteObj, i);
+ }
+
+ private final Object mRouteObj;
+ final JellybeanImpl this$0;
+
+ public SystemRouteController(Object obj)
+ {
+ this$0 = JellybeanImpl.this;
+ super();
+ mRouteObj = obj;
+ }
+ }
+
+ protected static final class UserRouteRecord
+ {
+
+ public final MediaRouter.RouteInfo mRoute;
+ public final Object mRouteObj;
+
+ public UserRouteRecord(MediaRouter.RouteInfo routeinfo, Object obj)
+ {
+ mRoute = routeinfo;
+ mRouteObj = obj;
+ }
+ }
+
+ protected static final class SystemRouteRecord
+ {
+
+ public MediaRouteDescriptor mRouteDescriptor;
+ public final String mRouteDescriptorId;
+ public final Object mRouteObj;
+
+ public SystemRouteRecord(Object obj, String s)
+ {
+ mRouteObj = obj;
+ mRouteDescriptorId = s;
+ }
+ }
+
+
+ private boolean addSystemRouteNoPublish(Object obj)
+ {
+ boolean flag;
+ if(getUserRouteRecord(obj) == null && findSystemRouteRecord(obj) < 0)
+ {
+ SystemRouteRecord systemrouterecord = new SystemRouteRecord(obj, assignRouteId(obj));
+ updateSystemRouteDescriptor(systemrouterecord);
+ mSystemRouteRecords.add(systemrouterecord);
+ flag = true;
+ } else
+ {
+ flag = false;
+ }
+ return flag;
+ }
+
+ private String assignRouteId(Object obj)
+ {
+ String s;
+ boolean flag;
+ if(getDefaultRoute() == obj)
+ flag = true;
+ else
+ flag = false;
+ if(flag)
+ {
+ s = "DEFAULT_ROUTE";
+ } else
+ {
+ Locale locale = Locale.US;
+ Object aobj[] = new Object[1];
+ aobj[0] = Integer.valueOf(getRouteName(obj).hashCode());
+ s = String.format(locale, "ROUTE_%08x", aobj);
+ }
+ if(findSystemRouteRecordByDescriptorId(s) >= 0) goto _L2; else goto _L1
+_L1:
+ return s;
+_L2:
+ int i = 2;
+ do
+ {
+label0:
+ {
+ Locale locale1 = Locale.US;
+ Object aobj1[] = new Object[2];
+ aobj1[0] = s;
+ aobj1[1] = Integer.valueOf(i);
+ String s1 = String.format(locale1, "%s_%d", aobj1);
+ if(findSystemRouteRecordByDescriptorId(s1) >= 0)
+ break label0;
+ s = s1;
+ }
+ if(true)
+ continue;
+ i++;
+ } while(true);
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ private void updateSystemRoutes()
+ {
+ boolean flag = false;
+ for(Iterator iterator = MediaRouterJellybean.getRoutes(mRouterObj).iterator(); iterator.hasNext();)
+ flag |= addSystemRouteNoPublish(iterator.next());
+
+ if(flag)
+ publishRoutes();
+ }
+
+ protected Object createCallbackObj()
+ {
+ return MediaRouterJellybean.createCallback(this);
+ }
+
+ protected Object createVolumeCallbackObj()
+ {
+ return MediaRouterJellybean.createVolumeCallback(this);
+ }
+
+ protected int findSystemRouteRecord(Object obj)
+ {
+ int i;
+ int j;
+ i = mSystemRouteRecords.size();
+ j = 0;
+_L3:
+ if(j >= i)
+ break MISSING_BLOCK_LABEL_41;
+ if(((SystemRouteRecord)mSystemRouteRecords.get(j)).mRouteObj != obj) goto _L2; else goto _L1
+_L1:
+ return j;
+_L2:
+ j++;
+ goto _L3
+ j = -1;
+ goto _L1
+ }
+
+ protected int findSystemRouteRecordByDescriptorId(String s)
+ {
+ int i;
+ int j;
+ i = mSystemRouteRecords.size();
+ j = 0;
+_L3:
+ if(j >= i)
+ break MISSING_BLOCK_LABEL_44;
+ if(!((SystemRouteRecord)mSystemRouteRecords.get(j)).mRouteDescriptorId.equals(s)) goto _L2; else goto _L1
+_L1:
+ return j;
+_L2:
+ j++;
+ goto _L3
+ j = -1;
+ goto _L1
+ }
+
+ protected int findUserRouteRecord(MediaRouter.RouteInfo routeinfo)
+ {
+ int i;
+ int j;
+ i = mUserRouteRecords.size();
+ j = 0;
+_L3:
+ if(j >= i)
+ break MISSING_BLOCK_LABEL_41;
+ if(((UserRouteRecord)mUserRouteRecords.get(j)).mRoute != routeinfo) goto _L2; else goto _L1
+_L1:
+ return j;
+_L2:
+ j++;
+ goto _L3
+ j = -1;
+ goto _L1
+ }
+
+ protected Object getDefaultRoute()
+ {
+ if(mGetDefaultRouteWorkaround == null)
+ mGetDefaultRouteWorkaround = new MediaRouterJellybean.GetDefaultRouteWorkaround();
+ return mGetDefaultRouteWorkaround.getDefaultRoute(mRouterObj);
+ }
+
+ protected String getRouteName(Object obj)
+ {
+ CharSequence charsequence = MediaRouterJellybean.RouteInfo.getName(obj, getContext());
+ String s;
+ if(charsequence != null)
+ s = charsequence.toString();
+ else
+ s = "";
+ return s;
+ }
+
+ protected UserRouteRecord getUserRouteRecord(Object obj)
+ {
+ Object obj1 = MediaRouterJellybean.RouteInfo.getTag(obj);
+ UserRouteRecord userrouterecord;
+ if(obj1 instanceof UserRouteRecord)
+ userrouterecord = (UserRouteRecord)obj1;
+ else
+ userrouterecord = null;
+ return userrouterecord;
+ }
+
+ protected void onBuildSystemRouteDescriptor(SystemRouteRecord systemrouterecord, MediaRouteDescriptor.Builder builder)
+ {
+ int i = MediaRouterJellybean.RouteInfo.getSupportedTypes(systemrouterecord.mRouteObj);
+ if((i & 1) != 0)
+ builder.addControlFilters(LIVE_AUDIO_CONTROL_FILTERS);
+ if((i & 2) != 0)
+ builder.addControlFilters(LIVE_VIDEO_CONTROL_FILTERS);
+ builder.setPlaybackType(MediaRouterJellybean.RouteInfo.getPlaybackType(systemrouterecord.mRouteObj));
+ builder.setPlaybackStream(MediaRouterJellybean.RouteInfo.getPlaybackStream(systemrouterecord.mRouteObj));
+ builder.setVolume(MediaRouterJellybean.RouteInfo.getVolume(systemrouterecord.mRouteObj));
+ builder.setVolumeMax(MediaRouterJellybean.RouteInfo.getVolumeMax(systemrouterecord.mRouteObj));
+ builder.setVolumeHandling(MediaRouterJellybean.RouteInfo.getVolumeHandling(systemrouterecord.mRouteObj));
+ }
+
+ public MediaRouteProvider.RouteController onCreateRouteController(String s)
+ {
+ int i = findSystemRouteRecordByDescriptorId(s);
+ SystemRouteController systemroutecontroller;
+ if(i >= 0)
+ systemroutecontroller = new SystemRouteController(((SystemRouteRecord)mSystemRouteRecords.get(i)).mRouteObj);
+ else
+ systemroutecontroller = null;
+ return systemroutecontroller;
+ }
+
+ public void onDiscoveryRequestChanged(MediaRouteDiscoveryRequest mediaroutediscoveryrequest)
+ {
+ int i = 0;
+ boolean flag = false;
+ if(mediaroutediscoveryrequest != null)
+ {
+ List list = mediaroutediscoveryrequest.getSelector().getControlCategories();
+ int j = list.size();
+ int k = 0;
+ while(k < j)
+ {
+ String s = (String)list.get(k);
+ if(s.equals("android.media.intent.category.LIVE_AUDIO"))
+ i |= 1;
+ else
+ if(s.equals("android.media.intent.category.LIVE_VIDEO"))
+ i |= 2;
+ else
+ i |= 0x800000;
+ k++;
+ }
+ flag = mediaroutediscoveryrequest.isActiveScan();
+ }
+ if(mRouteTypes != i || mActiveScan != flag)
+ {
+ mRouteTypes = i;
+ mActiveScan = flag;
+ updateCallback();
+ updateSystemRoutes();
+ }
+ }
+
+ public void onRouteAdded(Object obj)
+ {
+ if(addSystemRouteNoPublish(obj))
+ publishRoutes();
+ }
+
+ public void onRouteChanged(Object obj)
+ {
+ if(getUserRouteRecord(obj) == null)
+ {
+ int i = findSystemRouteRecord(obj);
+ if(i >= 0)
+ {
+ updateSystemRouteDescriptor((SystemRouteRecord)mSystemRouteRecords.get(i));
+ publishRoutes();
+ }
+ }
+ }
+
+ public void onRouteGrouped(Object obj, Object obj1, int i)
+ {
+ }
+
+ public void onRouteRemoved(Object obj)
+ {
+ if(getUserRouteRecord(obj) == null)
+ {
+ int i = findSystemRouteRecord(obj);
+ if(i >= 0)
+ {
+ mSystemRouteRecords.remove(i);
+ publishRoutes();
+ }
+ }
+ }
+
+ public void onRouteSelected(int i, Object obj)
+ {
+ if(obj == MediaRouterJellybean.getSelectedRoute(mRouterObj, 0x800003)) goto _L2; else goto _L1
+_L1:
+ return;
+_L2:
+ UserRouteRecord userrouterecord = getUserRouteRecord(obj);
+ if(userrouterecord != null)
+ {
+ userrouterecord.mRoute.select();
+ } else
+ {
+ int j = findSystemRouteRecord(obj);
+ if(j >= 0)
+ {
+ SystemRouteRecord systemrouterecord = (SystemRouteRecord)mSystemRouteRecords.get(j);
+ MediaRouter.RouteInfo routeinfo = mSyncCallback.getSystemRouteByDescriptorId(systemrouterecord.mRouteDescriptorId);
+ if(routeinfo != null)
+ routeinfo.select();
+ }
+ }
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ public void onRouteUngrouped(Object obj, Object obj1)
+ {
+ }
+
+ public void onRouteUnselected(int i, Object obj)
+ {
+ }
+
+ public void onRouteVolumeChanged(Object obj)
+ {
+ if(getUserRouteRecord(obj) == null)
+ {
+ int i = findSystemRouteRecord(obj);
+ if(i >= 0)
+ {
+ SystemRouteRecord systemrouterecord = (SystemRouteRecord)mSystemRouteRecords.get(i);
+ int j = MediaRouterJellybean.RouteInfo.getVolume(obj);
+ if(j != systemrouterecord.mRouteDescriptor.getVolume())
+ {
+ systemrouterecord.mRouteDescriptor = (new MediaRouteDescriptor.Builder(systemrouterecord.mRouteDescriptor)).setVolume(j).build();
+ publishRoutes();
+ }
+ }
+ }
+ }
+
+ public void onSyncRouteAdded(MediaRouter.RouteInfo routeinfo)
+ {
+ if(routeinfo.getProviderInstance() == this) goto _L2; else goto _L1
+_L1:
+ Object obj = MediaRouterJellybean.createUserRoute(mRouterObj, mUserRouteCategoryObj);
+ UserRouteRecord userrouterecord = new UserRouteRecord(routeinfo, obj);
+ MediaRouterJellybean.RouteInfo.setTag(obj, userrouterecord);
+ MediaRouterJellybean.UserRouteInfo.setVolumeCallback(obj, mVolumeCallbackObj);
+ updateUserRouteProperties(userrouterecord);
+ mUserRouteRecords.add(userrouterecord);
+ MediaRouterJellybean.addUserRoute(mRouterObj, obj);
+_L4:
+ return;
+_L2:
+ int i = findSystemRouteRecord(MediaRouterJellybean.getSelectedRoute(mRouterObj, 0x800003));
+ if(i >= 0 && ((SystemRouteRecord)mSystemRouteRecords.get(i)).mRouteDescriptorId.equals(routeinfo.getDescriptorId()))
+ routeinfo.select();
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ public void onSyncRouteChanged(MediaRouter.RouteInfo routeinfo)
+ {
+ if(routeinfo.getProviderInstance() != this)
+ {
+ int i = findUserRouteRecord(routeinfo);
+ if(i >= 0)
+ updateUserRouteProperties((UserRouteRecord)mUserRouteRecords.get(i));
+ }
+ }
+
+ public void onSyncRouteRemoved(MediaRouter.RouteInfo routeinfo)
+ {
+ if(routeinfo.getProviderInstance() != this)
+ {
+ int i = findUserRouteRecord(routeinfo);
+ if(i >= 0)
+ {
+ UserRouteRecord userrouterecord = (UserRouteRecord)mUserRouteRecords.remove(i);
+ MediaRouterJellybean.RouteInfo.setTag(userrouterecord.mRouteObj, null);
+ MediaRouterJellybean.UserRouteInfo.setVolumeCallback(userrouterecord.mRouteObj, null);
+ MediaRouterJellybean.removeUserRoute(mRouterObj, userrouterecord.mRouteObj);
+ }
+ }
+ }
+
+ public void onSyncRouteSelected(MediaRouter.RouteInfo routeinfo)
+ {
+ if(routeinfo.isSelected()) goto _L2; else goto _L1
+_L1:
+ return;
+_L2:
+ if(routeinfo.getProviderInstance() != this)
+ {
+ int j = findUserRouteRecord(routeinfo);
+ if(j >= 0)
+ selectRoute(((UserRouteRecord)mUserRouteRecords.get(j)).mRouteObj);
+ } else
+ {
+ int i = findSystemRouteRecordByDescriptorId(routeinfo.getDescriptorId());
+ if(i >= 0)
+ selectRoute(((SystemRouteRecord)mSystemRouteRecords.get(i)).mRouteObj);
+ }
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ public void onVolumeSetRequest(Object obj, int i)
+ {
+ UserRouteRecord userrouterecord = getUserRouteRecord(obj);
+ if(userrouterecord != null)
+ userrouterecord.mRoute.requestSetVolume(i);
+ }
+
+ public void onVolumeUpdateRequest(Object obj, int i)
+ {
+ UserRouteRecord userrouterecord = getUserRouteRecord(obj);
+ if(userrouterecord != null)
+ userrouterecord.mRoute.requestUpdateVolume(i);
+ }
+
+ protected void publishRoutes()
+ {
+ MediaRouteProviderDescriptor.Builder builder = new MediaRouteProviderDescriptor.Builder();
+ int i = mSystemRouteRecords.size();
+ for(int j = 0; j < i; j++)
+ builder.addRoute(((SystemRouteRecord)mSystemRouteRecords.get(j)).mRouteDescriptor);
+
+ setDescriptor(builder.build());
+ }
+
+ protected void selectRoute(Object obj)
+ {
+ if(mSelectRouteWorkaround == null)
+ mSelectRouteWorkaround = new MediaRouterJellybean.SelectRouteWorkaround();
+ mSelectRouteWorkaround.selectRoute(mRouterObj, 0x800003, obj);
+ }
+
+ protected void updateCallback()
+ {
+ if(mCallbackRegistered)
+ {
+ mCallbackRegistered = false;
+ MediaRouterJellybean.removeCallback(mRouterObj, mCallbackObj);
+ }
+ if(mRouteTypes != 0)
+ {
+ mCallbackRegistered = true;
+ MediaRouterJellybean.addCallback(mRouterObj, mRouteTypes, mCallbackObj);
+ }
+ }
+
+ protected void updateSystemRouteDescriptor(SystemRouteRecord systemrouterecord)
+ {
+ MediaRouteDescriptor.Builder builder = new MediaRouteDescriptor.Builder(systemrouterecord.mRouteDescriptorId, getRouteName(systemrouterecord.mRouteObj));
+ onBuildSystemRouteDescriptor(systemrouterecord, builder);
+ systemrouterecord.mRouteDescriptor = builder.build();
+ }
+
+ protected void updateUserRouteProperties(UserRouteRecord userrouterecord)
+ {
+ MediaRouterJellybean.UserRouteInfo.setName(userrouterecord.mRouteObj, userrouterecord.mRoute.getName());
+ MediaRouterJellybean.UserRouteInfo.setPlaybackType(userrouterecord.mRouteObj, userrouterecord.mRoute.getPlaybackType());
+ MediaRouterJellybean.UserRouteInfo.setPlaybackStream(userrouterecord.mRouteObj, userrouterecord.mRoute.getPlaybackStream());
+ MediaRouterJellybean.UserRouteInfo.setVolume(userrouterecord.mRouteObj, userrouterecord.mRoute.getVolume());
+ MediaRouterJellybean.UserRouteInfo.setVolumeMax(userrouterecord.mRouteObj, userrouterecord.mRoute.getVolumeMax());
+ MediaRouterJellybean.UserRouteInfo.setVolumeHandling(userrouterecord.mRouteObj, userrouterecord.mRoute.getVolumeHandling());
+ }
+
+ private static final ArrayList LIVE_AUDIO_CONTROL_FILTERS;
+ private static final ArrayList LIVE_VIDEO_CONTROL_FILTERS;
+ protected boolean mActiveScan;
+ protected final Object mCallbackObj = createCallbackObj();
+ protected boolean mCallbackRegistered;
+ private MediaRouterJellybean.GetDefaultRouteWorkaround mGetDefaultRouteWorkaround;
+ protected int mRouteTypes;
+ protected final Object mRouterObj;
+ private MediaRouterJellybean.SelectRouteWorkaround mSelectRouteWorkaround;
+ private final SyncCallback mSyncCallback;
+ protected final ArrayList mSystemRouteRecords = new ArrayList();
+ protected final Object mUserRouteCategoryObj;
+ protected final ArrayList mUserRouteRecords = new ArrayList();
+ protected final Object mVolumeCallbackObj = createVolumeCallbackObj();
+
+ static
+ {
+ IntentFilter intentfilter = new IntentFilter();
+ intentfilter.addCategory("android.media.intent.category.LIVE_AUDIO");
+ LIVE_AUDIO_CONTROL_FILTERS = new ArrayList();
+ LIVE_AUDIO_CONTROL_FILTERS.add(intentfilter);
+ IntentFilter intentfilter1 = new IntentFilter();
+ intentfilter1.addCategory("android.media.intent.category.LIVE_VIDEO");
+ LIVE_VIDEO_CONTROL_FILTERS = new ArrayList();
+ LIVE_VIDEO_CONTROL_FILTERS.add(intentfilter1);
+ }
+
+ public JellybeanImpl(Context context, SyncCallback synccallback)
+ {
+ super(context);
+ mSyncCallback = synccallback;
+ mRouterObj = MediaRouterJellybean.getMediaRouter(context);
+ Resources resources = context.getResources();
+ mUserRouteCategoryObj = MediaRouterJellybean.createRouteCategory(mRouterObj, resources.getString(android.support.v7.mediarouter.R.string.mr_user_route_category_name), false);
+ updateSystemRoutes();
+ }
+ }
+
+ static class LegacyImpl extends SystemMediaRouteProvider
+ {
+ final class VolumeChangeReceiver extends BroadcastReceiver
+ {
+
+ public void onReceive(Context context, Intent intent)
+ {
+ if(intent.getAction().equals("android.media.VOLUME_CHANGED_ACTION") && intent.getIntExtra("android.media.EXTRA_VOLUME_STREAM_TYPE", -1) == 3)
+ {
+ int i = intent.getIntExtra("android.media.EXTRA_VOLUME_STREAM_VALUE", -1);
+ if(i >= 0 && i != mLastReportedVolume)
+ publishRoutes();
+ }
+ }
+
+ public static final String EXTRA_VOLUME_STREAM_TYPE = "android.media.EXTRA_VOLUME_STREAM_TYPE";
+ public static final String EXTRA_VOLUME_STREAM_VALUE = "android.media.EXTRA_VOLUME_STREAM_VALUE";
+ public static final String VOLUME_CHANGED_ACTION = "android.media.VOLUME_CHANGED_ACTION";
+ final LegacyImpl this$0;
+
+ VolumeChangeReceiver()
+ {
+ this$0 = LegacyImpl.this;
+ super();
+ }
+ }
+
+ final class DefaultRouteController extends MediaRouteProvider.RouteController
+ {
+
+ public void onSetVolume(int i)
+ {
+ mAudioManager.setStreamVolume(3, i, 0);
+ publishRoutes();
+ }
+
+ public void onUpdateVolume(int i)
+ {
+ int j = mAudioManager.getStreamVolume(3);
+ if(Math.min(mAudioManager.getStreamMaxVolume(3), Math.max(0, j + i)) != j)
+ mAudioManager.setStreamVolume(3, j, 0);
+ publishRoutes();
+ }
+
+ final LegacyImpl this$0;
+
+ DefaultRouteController()
+ {
+ this$0 = LegacyImpl.this;
+ super();
+ }
+ }
+
+
+ private void publishRoutes()
+ {
+ Resources resources = getContext().getResources();
+ int i = mAudioManager.getStreamMaxVolume(3);
+ mLastReportedVolume = mAudioManager.getStreamVolume(3);
+ MediaRouteDescriptor mediaroutedescriptor = (new MediaRouteDescriptor.Builder("DEFAULT_ROUTE", resources.getString(android.support.v7.mediarouter.R.string.mr_system_route_name))).addControlFilters(CONTROL_FILTERS).setPlaybackStream(3).setPlaybackType(0).setVolumeHandling(1).setVolumeMax(i).setVolume(mLastReportedVolume).build();
+ setDescriptor((new MediaRouteProviderDescriptor.Builder()).addRoute(mediaroutedescriptor).build());
+ }
+
+ public MediaRouteProvider.RouteController onCreateRouteController(String s)
+ {
+ DefaultRouteController defaultroutecontroller;
+ if(s.equals("DEFAULT_ROUTE"))
+ defaultroutecontroller = new DefaultRouteController();
+ else
+ defaultroutecontroller = null;
+ return defaultroutecontroller;
+ }
+
+ private static final ArrayList CONTROL_FILTERS;
+ private static final int PLAYBACK_STREAM = 3;
+ private final AudioManager mAudioManager;
+ private int mLastReportedVolume;
+ private final VolumeChangeReceiver mVolumeChangeReceiver = new VolumeChangeReceiver();
+
+ static
+ {
+ IntentFilter intentfilter = new IntentFilter();
+ intentfilter.addCategory("android.media.intent.category.LIVE_AUDIO");
+ intentfilter.addCategory("android.media.intent.category.LIVE_VIDEO");
+ CONTROL_FILTERS = new ArrayList();
+ CONTROL_FILTERS.add(intentfilter);
+ }
+
+
+
+
+ public LegacyImpl(Context context)
+ {
+ super(context);
+ mLastReportedVolume = -1;
+ mAudioManager = (AudioManager)context.getSystemService("audio");
+ context.registerReceiver(mVolumeChangeReceiver, new IntentFilter("android.media.VOLUME_CHANGED_ACTION"));
+ publishRoutes();
+ }
+ }
+
+ public static interface SyncCallback
+ {
+
+ public abstract MediaRouter.RouteInfo getSystemRouteByDescriptorId(String s);
+ }
+
+
+ protected SystemMediaRouteProvider(Context context)
+ {
+ super(context, new MediaRouteProvider.ProviderMetadata(new ComponentName("android", android/support/v7/media/SystemMediaRouteProvider.getName())));
+ }
+
+ public static SystemMediaRouteProvider obtain(Context context, SyncCallback synccallback)
+ {
+ Object obj;
+ if(android.os.Build.VERSION.SDK_INT >= 18)
+ obj = new JellybeanMr2Impl(context, synccallback);
+ else
+ if(android.os.Build.VERSION.SDK_INT >= 17)
+ obj = new JellybeanMr1Impl(context, synccallback);
+ else
+ if(android.os.Build.VERSION.SDK_INT >= 16)
+ obj = new JellybeanImpl(context, synccallback);
+ else
+ obj = new LegacyImpl(context);
+ return ((SystemMediaRouteProvider) (obj));
+ }
+
+ public void onSyncRouteAdded(MediaRouter.RouteInfo routeinfo)
+ {
+ }
+
+ public void onSyncRouteChanged(MediaRouter.RouteInfo routeinfo)
+ {
+ }
+
+ public void onSyncRouteRemoved(MediaRouter.RouteInfo routeinfo)
+ {
+ }
+
+ public void onSyncRouteSelected(MediaRouter.RouteInfo routeinfo)
+ {
+ }
+
+ public static final String DEFAULT_ROUTE_ID = "DEFAULT_ROUTE";
+ public static final String PACKAGE_NAME = "android";
+ private static final String TAG = "SystemMediaRouteProvider";
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Allocation.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Allocation.java
new file mode 100644
index 0000000..04e9a61
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Allocation.java
@@ -0,0 +1,1011 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+import android.content.res.Resources;
+import android.graphics.*;
+import android.util.Log;
+import java.lang.reflect.Method;
+
+// Referenced classes of package android.support.v8.renderscript:
+// BaseObj, RSIllegalArgumentException, Type, Element,
+// RenderScript, RSRuntimeException, RenderScriptThunker, AllocationThunker,
+// RSInvalidStateException, FieldPacker
+
+public class Allocation extends BaseObj
+{
+ public static final class MipmapControl extends Enum
+ {
+
+ public static MipmapControl valueOf(String s)
+ {
+ return (MipmapControl)Enum.valueOf(android/support/v8/renderscript/Allocation$MipmapControl, s);
+ }
+
+ public static MipmapControl[] values()
+ {
+ return (MipmapControl[])$VALUES.clone();
+ }
+
+ private static final MipmapControl $VALUES[];
+ public static final MipmapControl MIPMAP_FULL;
+ public static final MipmapControl MIPMAP_NONE;
+ public static final MipmapControl MIPMAP_ON_SYNC_TO_TEXTURE;
+ int mID;
+
+ static
+ {
+ MIPMAP_NONE = new MipmapControl("MIPMAP_NONE", 0, 0);
+ MIPMAP_FULL = new MipmapControl("MIPMAP_FULL", 1, 1);
+ MIPMAP_ON_SYNC_TO_TEXTURE = new MipmapControl("MIPMAP_ON_SYNC_TO_TEXTURE", 2, 2);
+ MipmapControl amipmapcontrol[] = new MipmapControl[3];
+ amipmapcontrol[0] = MIPMAP_NONE;
+ amipmapcontrol[1] = MIPMAP_FULL;
+ amipmapcontrol[2] = MIPMAP_ON_SYNC_TO_TEXTURE;
+ $VALUES = amipmapcontrol;
+ }
+
+ private MipmapControl(String s, int i, int j)
+ {
+ super(s, i);
+ mID = j;
+ }
+ }
+
+
+ Allocation(int i, RenderScript renderscript, Type type, int j)
+ {
+ super(i, renderscript);
+ mReadAllowed = true;
+ mWriteAllowed = true;
+ mSelectedFace = Type.CubemapFace.POSITIVE_X;
+ if((j & 0xffffff1c) != 0)
+ throw new RSIllegalArgumentException("Unknown usage specified.");
+ if((j & 0x20) != 0)
+ {
+ mWriteAllowed = false;
+ if((j & 0xffffffdc) != 0)
+ throw new RSIllegalArgumentException("Invalid usage combination.");
+ }
+ mType = type;
+ mUsage = j;
+ mSize = mType.getCount() * mType.getElement().getBytesSize();
+ if(type != null)
+ updateCacheInfo(type);
+ if(!RenderScript.sUseGCHooks)
+ break MISSING_BLOCK_LABEL_159;
+ Method method = RenderScript.registerNativeAllocation;
+ Object obj = RenderScript.sRuntime;
+ Object aobj[] = new Object[1];
+ aobj[0] = Integer.valueOf(mSize);
+ method.invoke(obj, aobj);
+ return;
+ Exception exception;
+ exception;
+ Log.e("RenderScript_jni", (new StringBuilder()).append("Couldn't invoke registerNativeAllocation:").append(exception).toString());
+ throw new RSRuntimeException((new StringBuilder()).append("Couldn't invoke registerNativeAllocation:").append(exception).toString());
+ }
+
+ public static Allocation createCubemapFromBitmap(RenderScript renderscript, Bitmap bitmap)
+ {
+ return createCubemapFromBitmap(renderscript, bitmap, MipmapControl.MIPMAP_NONE, 2);
+ }
+
+ public static Allocation createCubemapFromBitmap(RenderScript renderscript, Bitmap bitmap, MipmapControl mipmapcontrol, int i)
+ {
+ boolean flag = true;
+ renderscript.validate();
+ int j = bitmap.getHeight();
+ int k = bitmap.getWidth();
+ if(k % 6 != 0)
+ throw new RSIllegalArgumentException("Cubemap height must be multiple of 6");
+ if(k / 6 != j)
+ throw new RSIllegalArgumentException("Only square cube map faces supported");
+ boolean flag1;
+ if((j & j - 1) == 0)
+ flag1 = flag;
+ else
+ flag1 = false;
+ if(!flag1)
+ throw new RSIllegalArgumentException("Only power of 2 cube faces supported");
+ Element element = elementFromBitmap(renderscript, bitmap);
+ Type.Builder builder = new Type.Builder(renderscript, element);
+ builder.setX(j);
+ builder.setY(j);
+ builder.setFaces(flag);
+ Type type;
+ int l;
+ if(mipmapcontrol != MipmapControl.MIPMAP_FULL)
+ flag = false;
+ builder.setMipmaps(flag);
+ type = builder.create();
+ l = renderscript.nAllocationCubeCreateFromBitmap(type.getID(renderscript), mipmapcontrol.mID, bitmap, i);
+ if(l == 0)
+ throw new RSRuntimeException((new StringBuilder()).append("Load failed for bitmap ").append(bitmap).append(" element ").append(element).toString());
+ else
+ return new Allocation(l, renderscript, type, i);
+ }
+
+ public static Allocation createCubemapFromCubeFaces(RenderScript renderscript, Bitmap bitmap, Bitmap bitmap1, Bitmap bitmap2, Bitmap bitmap3, Bitmap bitmap4, Bitmap bitmap5)
+ {
+ return createCubemapFromCubeFaces(renderscript, bitmap, bitmap1, bitmap2, bitmap3, bitmap4, bitmap5, MipmapControl.MIPMAP_NONE, 2);
+ }
+
+ public static Allocation createCubemapFromCubeFaces(RenderScript renderscript, Bitmap bitmap, Bitmap bitmap1, Bitmap bitmap2, Bitmap bitmap3, Bitmap bitmap4, Bitmap bitmap5, MipmapControl mipmapcontrol,
+ int i)
+ {
+ return null;
+ }
+
+ public static Allocation createFromBitmap(RenderScript renderscript, Bitmap bitmap)
+ {
+ return createFromBitmap(renderscript, bitmap, MipmapControl.MIPMAP_NONE, 131);
+ }
+
+ public static Allocation createFromBitmap(RenderScript renderscript, Bitmap bitmap, MipmapControl mipmapcontrol, int i)
+ {
+ Allocation allocation;
+ if(RenderScript.isNative)
+ {
+ allocation = AllocationThunker.createFromBitmap((RenderScriptThunker)renderscript, bitmap, mipmapcontrol, i);
+ } else
+ {
+ renderscript.validate();
+ if(bitmap.getConfig() == null)
+ {
+ if((i & 0x80) != 0)
+ throw new RSIllegalArgumentException("USAGE_SHARED cannot be used with a Bitmap that has a null config.");
+ Bitmap bitmap1 = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), android.graphics.Bitmap.Config.ARGB_8888);
+ (new Canvas(bitmap1)).drawBitmap(bitmap, 0.0F, 0.0F, null);
+ allocation = createFromBitmap(renderscript, bitmap1, mipmapcontrol, i);
+ } else
+ {
+ Type type = typeFromBitmap(renderscript, bitmap, mipmapcontrol);
+ if(mipmapcontrol == MipmapControl.MIPMAP_NONE && type.getElement().isCompatible(Element.RGBA_8888(renderscript)) && i == 131)
+ {
+ int k = renderscript.nAllocationCreateBitmapBackedAllocation(type.getID(renderscript), mipmapcontrol.mID, bitmap, i);
+ if(k == 0)
+ throw new RSRuntimeException("Load failed.");
+ allocation = new Allocation(k, renderscript, type, i);
+ allocation.setBitmap(bitmap);
+ } else
+ {
+ int j = renderscript.nAllocationCreateFromBitmap(type.getID(renderscript), mipmapcontrol.mID, bitmap, i);
+ if(j == 0)
+ throw new RSRuntimeException("Load failed.");
+ allocation = new Allocation(j, renderscript, type, i);
+ }
+ }
+ }
+ return allocation;
+ }
+
+ public static Allocation createFromBitmapResource(RenderScript renderscript, Resources resources, int i)
+ {
+ return createFromBitmapResource(renderscript, resources, i, MipmapControl.MIPMAP_NONE, 3);
+ }
+
+ public static Allocation createFromBitmapResource(RenderScript renderscript, Resources resources, int i, MipmapControl mipmapcontrol, int j)
+ {
+ renderscript.validate();
+ if((j & 0xe0) != 0)
+ {
+ throw new RSIllegalArgumentException("Unsupported usage specified.");
+ } else
+ {
+ Bitmap bitmap = BitmapFactory.decodeResource(resources, i);
+ Allocation allocation = createFromBitmap(renderscript, bitmap, mipmapcontrol, j);
+ bitmap.recycle();
+ return allocation;
+ }
+ }
+
+ public static Allocation createFromString(RenderScript renderscript, String s, int i)
+ {
+ renderscript.validate();
+ Allocation allocation;
+ try
+ {
+ byte abyte0[] = s.getBytes("UTF-8");
+ allocation = createSized(renderscript, Element.U8(renderscript), abyte0.length, i);
+ allocation.copyFrom(abyte0);
+ }
+ catch(Exception exception)
+ {
+ throw new RSRuntimeException("Could not convert string to utf-8.");
+ }
+ return allocation;
+ }
+
+ public static Allocation createSized(RenderScript renderscript, Element element, int i)
+ {
+ return createSized(renderscript, element, i, 1);
+ }
+
+ public static Allocation createSized(RenderScript renderscript, Element element, int i, int j)
+ {
+ Allocation allocation;
+ if(RenderScript.isNative)
+ {
+ RenderScriptThunker _tmp = (RenderScriptThunker)renderscript;
+ allocation = AllocationThunker.createSized(renderscript, element, i, j);
+ } else
+ {
+ renderscript.validate();
+ Type.Builder builder = new Type.Builder(renderscript, element);
+ builder.setX(i);
+ Type type = builder.create();
+ int k = renderscript.nAllocationCreateTyped(type.getID(renderscript), MipmapControl.MIPMAP_NONE.mID, j, 0);
+ if(k == 0)
+ throw new RSRuntimeException("Allocation creation failed.");
+ allocation = new Allocation(k, renderscript, type, j);
+ }
+ return allocation;
+ }
+
+ public static Allocation createTyped(RenderScript renderscript, Type type)
+ {
+ return createTyped(renderscript, type, MipmapControl.MIPMAP_NONE, 1);
+ }
+
+ public static Allocation createTyped(RenderScript renderscript, Type type, int i)
+ {
+ return createTyped(renderscript, type, MipmapControl.MIPMAP_NONE, i);
+ }
+
+ public static Allocation createTyped(RenderScript renderscript, Type type, MipmapControl mipmapcontrol, int i)
+ {
+ Allocation allocation;
+ if(RenderScript.isNative)
+ {
+ allocation = AllocationThunker.createTyped((RenderScriptThunker)renderscript, type, mipmapcontrol, i);
+ } else
+ {
+ renderscript.validate();
+ if(type.getID(renderscript) == 0)
+ throw new RSInvalidStateException("Bad Type");
+ int j = renderscript.nAllocationCreateTyped(type.getID(renderscript), mipmapcontrol.mID, i, 0);
+ if(j == 0)
+ throw new RSRuntimeException("Allocation creation failed.");
+ allocation = new Allocation(j, renderscript, type, i);
+ }
+ return allocation;
+ }
+
+ private void data1DChecks(int i, int j, int k, int l)
+ {
+ mRS.validate();
+ if(i < 0)
+ throw new RSIllegalArgumentException("Offset must be >= 0.");
+ if(j < 1)
+ throw new RSIllegalArgumentException("Count must be >= 1.");
+ if(i + j > mCurrentCount)
+ throw new RSIllegalArgumentException((new StringBuilder()).append("Overflow, Available count ").append(mCurrentCount).append(", got ").append(j).append(" at offset ").append(i).append(".").toString());
+ if(k < l)
+ throw new RSIllegalArgumentException("Array too small for allocation type.");
+ else
+ return;
+ }
+
+ static Element elementFromBitmap(RenderScript renderscript, Bitmap bitmap)
+ {
+ android.graphics.Bitmap.Config config = bitmap.getConfig();
+ Element element;
+ if(config == android.graphics.Bitmap.Config.ALPHA_8)
+ element = Element.A_8(renderscript);
+ else
+ if(config == android.graphics.Bitmap.Config.ARGB_4444)
+ element = Element.RGBA_4444(renderscript);
+ else
+ if(config == android.graphics.Bitmap.Config.ARGB_8888)
+ element = Element.RGBA_8888(renderscript);
+ else
+ if(config == android.graphics.Bitmap.Config.RGB_565)
+ element = Element.RGB_565(renderscript);
+ else
+ throw new RSInvalidStateException((new StringBuilder()).append("Bad bitmap type: ").append(config).toString());
+ return element;
+ }
+
+ private int getIDSafe()
+ {
+ int i;
+ if(mAdaptedAllocation != null)
+ i = mAdaptedAllocation.getID(mRS);
+ else
+ i = getID(mRS);
+ return i;
+ }
+
+ private void setBitmap(Bitmap bitmap)
+ {
+ mBitmap = bitmap;
+ }
+
+ static Type typeFromBitmap(RenderScript renderscript, Bitmap bitmap, MipmapControl mipmapcontrol)
+ {
+ Type.Builder builder = new Type.Builder(renderscript, elementFromBitmap(renderscript, bitmap));
+ builder.setX(bitmap.getWidth());
+ builder.setY(bitmap.getHeight());
+ boolean flag;
+ if(mipmapcontrol == MipmapControl.MIPMAP_FULL)
+ flag = true;
+ else
+ flag = false;
+ builder.setMipmaps(flag);
+ return builder.create();
+ }
+
+ private void updateCacheInfo(Type type)
+ {
+ mCurrentDimX = type.getX();
+ mCurrentDimY = type.getY();
+ mCurrentDimZ = type.getZ();
+ mCurrentCount = mCurrentDimX;
+ if(mCurrentDimY > 1)
+ mCurrentCount = mCurrentCount * mCurrentDimY;
+ if(mCurrentDimZ > 1)
+ mCurrentCount = mCurrentCount * mCurrentDimZ;
+ }
+
+ private void validate2DRange(int i, int j, int k, int l)
+ {
+ if(mAdaptedAllocation == null)
+ {
+ if(i < 0 || j < 0)
+ throw new RSIllegalArgumentException("Offset cannot be negative.");
+ if(l < 0 || k < 0)
+ throw new RSIllegalArgumentException("Height or width cannot be negative.");
+ if(i + k > mCurrentDimX || j + l > mCurrentDimY)
+ throw new RSIllegalArgumentException("Updated region larger than allocation.");
+ }
+ }
+
+ private void validate3DRange(int i, int j, int k, int l, int i1, int j1)
+ {
+ if(mAdaptedAllocation == null)
+ {
+ if(i < 0 || j < 0 || k < 0)
+ throw new RSIllegalArgumentException("Offset cannot be negative.");
+ if(i1 < 0 || l < 0 || j1 < 0)
+ throw new RSIllegalArgumentException("Height or width cannot be negative.");
+ if(i + l > mCurrentDimX || j + i1 > mCurrentDimY || k + j1 > mCurrentDimZ)
+ throw new RSIllegalArgumentException("Updated region larger than allocation.");
+ }
+ }
+
+ private void validateBitmapFormat(Bitmap bitmap)
+ {
+ android.graphics.Bitmap.Config config;
+ config = bitmap.getConfig();
+ if(config == null)
+ throw new RSIllegalArgumentException("Bitmap has an unsupported format for this operation");
+ class _cls1
+ {
+
+ static final int $SwitchMap$android$graphics$Bitmap$Config[];
+
+ static
+ {
+ $SwitchMap$android$graphics$Bitmap$Config = new int[android.graphics.Bitmap.Config.values().length];
+ NoSuchFieldError nosuchfielderror3;
+ try
+ {
+ $SwitchMap$android$graphics$Bitmap$Config[android.graphics.Bitmap.Config.ALPHA_8.ordinal()] = 1;
+ }
+ catch(NoSuchFieldError nosuchfielderror) { }
+ try
+ {
+ $SwitchMap$android$graphics$Bitmap$Config[android.graphics.Bitmap.Config.ARGB_8888.ordinal()] = 2;
+ }
+ catch(NoSuchFieldError nosuchfielderror1) { }
+ try
+ {
+ $SwitchMap$android$graphics$Bitmap$Config[android.graphics.Bitmap.Config.RGB_565.ordinal()] = 3;
+ }
+ catch(NoSuchFieldError nosuchfielderror2) { }
+ $SwitchMap$android$graphics$Bitmap$Config[android.graphics.Bitmap.Config.ARGB_4444.ordinal()] = 4;
+_L2:
+ return;
+ nosuchfielderror3;
+ if(true) goto _L2; else goto _L1
+_L1:
+ }
+ }
+
+ _cls1..SwitchMap.android.graphics.Bitmap.Config[config.ordinal()];
+ JVM INSTR tableswitch 1 4: default 60
+ // 1 61
+ // 2 162
+ // 3 277
+ // 4 392;
+ goto _L1 _L2 _L3 _L4 _L5
+_L1:
+ return;
+_L2:
+ if(mType.getElement().mKind != Element.DataKind.PIXEL_A)
+ throw new RSIllegalArgumentException((new StringBuilder()).append("Allocation kind is ").append(mType.getElement().mKind).append(", type ").append(mType.getElement().mType).append(" of ").append(mType.getElement().getBytesSize()).append(" bytes, passed bitmap was ").append(config).toString());
+ continue; /* Loop/switch isn't completed */
+_L3:
+ if(mType.getElement().mKind != Element.DataKind.PIXEL_RGBA || mType.getElement().getBytesSize() != 4)
+ throw new RSIllegalArgumentException((new StringBuilder()).append("Allocation kind is ").append(mType.getElement().mKind).append(", type ").append(mType.getElement().mType).append(" of ").append(mType.getElement().getBytesSize()).append(" bytes, passed bitmap was ").append(config).toString());
+ continue; /* Loop/switch isn't completed */
+_L4:
+ if(mType.getElement().mKind != Element.DataKind.PIXEL_RGB || mType.getElement().getBytesSize() != 2)
+ throw new RSIllegalArgumentException((new StringBuilder()).append("Allocation kind is ").append(mType.getElement().mKind).append(", type ").append(mType.getElement().mType).append(" of ").append(mType.getElement().getBytesSize()).append(" bytes, passed bitmap was ").append(config).toString());
+ continue; /* Loop/switch isn't completed */
+_L5:
+ if(mType.getElement().mKind != Element.DataKind.PIXEL_RGBA || mType.getElement().getBytesSize() != 2)
+ throw new RSIllegalArgumentException((new StringBuilder()).append("Allocation kind is ").append(mType.getElement().mKind).append(", type ").append(mType.getElement().mType).append(" of ").append(mType.getElement().getBytesSize()).append(" bytes, passed bitmap was ").append(config).toString());
+ if(true) goto _L1; else goto _L6
+_L6:
+ }
+
+ private void validateBitmapSize(Bitmap bitmap)
+ {
+ if(mCurrentDimX != bitmap.getWidth() || mCurrentDimY != bitmap.getHeight())
+ throw new RSIllegalArgumentException("Cannot update allocation from bitmap, sizes mismatch");
+ else
+ return;
+ }
+
+ private void validateIsFloat32()
+ {
+ if(mType.mElement.mType == Element.DataType.FLOAT_32)
+ return;
+ else
+ throw new RSIllegalArgumentException((new StringBuilder()).append("32 bit float source does not match allocation type ").append(mType.mElement.mType).toString());
+ }
+
+ private void validateIsInt16()
+ {
+ if(mType.mElement.mType == Element.DataType.SIGNED_16 || mType.mElement.mType == Element.DataType.UNSIGNED_16)
+ return;
+ else
+ throw new RSIllegalArgumentException((new StringBuilder()).append("16 bit integer source does not match allocation type ").append(mType.mElement.mType).toString());
+ }
+
+ private void validateIsInt32()
+ {
+ if(mType.mElement.mType == Element.DataType.SIGNED_32 || mType.mElement.mType == Element.DataType.UNSIGNED_32)
+ return;
+ else
+ throw new RSIllegalArgumentException((new StringBuilder()).append("32 bit integer source does not match allocation type ").append(mType.mElement.mType).toString());
+ }
+
+ private void validateIsInt8()
+ {
+ if(mType.mElement.mType == Element.DataType.SIGNED_8 || mType.mElement.mType == Element.DataType.UNSIGNED_8)
+ return;
+ else
+ throw new RSIllegalArgumentException((new StringBuilder()).append("8 bit integer source does not match allocation type ").append(mType.mElement.mType).toString());
+ }
+
+ private void validateIsObject()
+ {
+ if(mType.mElement.mType == Element.DataType.RS_ELEMENT || mType.mElement.mType == Element.DataType.RS_TYPE || mType.mElement.mType == Element.DataType.RS_ALLOCATION || mType.mElement.mType == Element.DataType.RS_SAMPLER || mType.mElement.mType == Element.DataType.RS_SCRIPT)
+ return;
+ else
+ throw new RSIllegalArgumentException((new StringBuilder()).append("Object source does not match allocation type ").append(mType.mElement.mType).toString());
+ }
+
+ public void copy1DRangeFrom(int i, int j, Allocation allocation, int k)
+ {
+ mRS.nAllocationData2D(getIDSafe(), i, 0, mSelectedLOD, mSelectedFace.mID, j, 1, allocation.getID(mRS), k, 0, allocation.mSelectedLOD, allocation.mSelectedFace.mID);
+ }
+
+ public void copy1DRangeFrom(int i, int j, byte abyte0[])
+ {
+ validateIsInt8();
+ copy1DRangeFromUnchecked(i, j, abyte0);
+ }
+
+ public void copy1DRangeFrom(int i, int j, float af[])
+ {
+ validateIsFloat32();
+ copy1DRangeFromUnchecked(i, j, af);
+ }
+
+ public void copy1DRangeFrom(int i, int j, int ai[])
+ {
+ validateIsInt32();
+ copy1DRangeFromUnchecked(i, j, ai);
+ }
+
+ public void copy1DRangeFrom(int i, int j, short aword0[])
+ {
+ validateIsInt16();
+ copy1DRangeFromUnchecked(i, j, aword0);
+ }
+
+ public void copy1DRangeFromUnchecked(int i, int j, byte abyte0[])
+ {
+ int k = j * mType.mElement.getBytesSize();
+ data1DChecks(i, j, abyte0.length, k);
+ mRS.nAllocationData1D(getIDSafe(), i, mSelectedLOD, j, abyte0, k);
+ }
+
+ public void copy1DRangeFromUnchecked(int i, int j, float af[])
+ {
+ int k = j * mType.mElement.getBytesSize();
+ data1DChecks(i, j, 4 * af.length, k);
+ mRS.nAllocationData1D(getIDSafe(), i, mSelectedLOD, j, af, k);
+ }
+
+ public void copy1DRangeFromUnchecked(int i, int j, int ai[])
+ {
+ int k = j * mType.mElement.getBytesSize();
+ data1DChecks(i, j, 4 * ai.length, k);
+ mRS.nAllocationData1D(getIDSafe(), i, mSelectedLOD, j, ai, k);
+ }
+
+ public void copy1DRangeFromUnchecked(int i, int j, short aword0[])
+ {
+ int k = j * mType.mElement.getBytesSize();
+ data1DChecks(i, j, 2 * aword0.length, k);
+ mRS.nAllocationData1D(getIDSafe(), i, mSelectedLOD, j, aword0, k);
+ }
+
+ public void copy2DRangeFrom(int i, int j, int k, int l, Allocation allocation, int i1, int j1)
+ {
+ mRS.validate();
+ validate2DRange(i, j, k, l);
+ mRS.nAllocationData2D(getIDSafe(), i, j, mSelectedLOD, mSelectedFace.mID, k, l, allocation.getID(mRS), i1, j1, allocation.mSelectedLOD, allocation.mSelectedFace.mID);
+ }
+
+ public void copy2DRangeFrom(int i, int j, int k, int l, byte abyte0[])
+ {
+ validateIsInt8();
+ copy2DRangeFromUnchecked(i, j, k, l, abyte0);
+ }
+
+ public void copy2DRangeFrom(int i, int j, int k, int l, float af[])
+ {
+ validateIsFloat32();
+ copy2DRangeFromUnchecked(i, j, k, l, af);
+ }
+
+ public void copy2DRangeFrom(int i, int j, int k, int l, int ai[])
+ {
+ validateIsInt32();
+ copy2DRangeFromUnchecked(i, j, k, l, ai);
+ }
+
+ public void copy2DRangeFrom(int i, int j, int k, int l, short aword0[])
+ {
+ validateIsInt16();
+ copy2DRangeFromUnchecked(i, j, k, l, aword0);
+ }
+
+ public void copy2DRangeFrom(int i, int j, Bitmap bitmap)
+ {
+ mRS.validate();
+ if(bitmap.getConfig() == null)
+ {
+ Bitmap bitmap1 = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), android.graphics.Bitmap.Config.ARGB_8888);
+ (new Canvas(bitmap1)).drawBitmap(bitmap, 0.0F, 0.0F, null);
+ copy2DRangeFrom(i, j, bitmap1);
+ } else
+ {
+ validateBitmapFormat(bitmap);
+ validate2DRange(i, j, bitmap.getWidth(), bitmap.getHeight());
+ mRS.nAllocationData2D(getIDSafe(), i, j, mSelectedLOD, mSelectedFace.mID, bitmap);
+ }
+ }
+
+ void copy2DRangeFromUnchecked(int i, int j, int k, int l, byte abyte0[])
+ {
+ mRS.validate();
+ validate2DRange(i, j, k, l);
+ mRS.nAllocationData2D(getIDSafe(), i, j, mSelectedLOD, mSelectedFace.mID, k, l, abyte0, abyte0.length);
+ }
+
+ void copy2DRangeFromUnchecked(int i, int j, int k, int l, float af[])
+ {
+ mRS.validate();
+ validate2DRange(i, j, k, l);
+ mRS.nAllocationData2D(getIDSafe(), i, j, mSelectedLOD, mSelectedFace.mID, k, l, af, 4 * af.length);
+ }
+
+ void copy2DRangeFromUnchecked(int i, int j, int k, int l, int ai[])
+ {
+ mRS.validate();
+ validate2DRange(i, j, k, l);
+ mRS.nAllocationData2D(getIDSafe(), i, j, mSelectedLOD, mSelectedFace.mID, k, l, ai, 4 * ai.length);
+ }
+
+ void copy2DRangeFromUnchecked(int i, int j, int k, int l, short aword0[])
+ {
+ mRS.validate();
+ validate2DRange(i, j, k, l);
+ mRS.nAllocationData2D(getIDSafe(), i, j, mSelectedLOD, mSelectedFace.mID, k, l, aword0, 2 * aword0.length);
+ }
+
+ public void copy3DRangeFrom(int i, int j, int k, int l, int i1, int j1, Allocation allocation,
+ int k1, int l1, int i2)
+ {
+ mRS.validate();
+ validate3DRange(i, j, k, l, i1, j1);
+ mRS.nAllocationData3D(getIDSafe(), i, j, k, mSelectedLOD, l, i1, j1, allocation.getID(mRS), k1, l1, i2, allocation.mSelectedLOD);
+ }
+
+ public void copy3DRangeFrom(int i, int j, int k, int l, int i1, int j1, byte abyte0[])
+ {
+ validateIsInt8();
+ copy3DRangeFromUnchecked(i, j, k, l, i1, j1, abyte0);
+ }
+
+ public void copy3DRangeFrom(int i, int j, int k, int l, int i1, int j1, float af[])
+ {
+ validateIsFloat32();
+ copy3DRangeFromUnchecked(i, j, k, l, i1, j1, af);
+ }
+
+ public void copy3DRangeFrom(int i, int j, int k, int l, int i1, int j1, int ai[])
+ {
+ validateIsInt32();
+ copy3DRangeFromUnchecked(i, j, k, l, i1, j1, ai);
+ }
+
+ public void copy3DRangeFrom(int i, int j, int k, int l, int i1, int j1, short aword0[])
+ {
+ validateIsInt16();
+ copy3DRangeFromUnchecked(i, j, k, l, i1, j1, aword0);
+ }
+
+ void copy3DRangeFromUnchecked(int i, int j, int k, int l, int i1, int j1, byte abyte0[])
+ {
+ mRS.validate();
+ validate3DRange(i, j, k, l, i1, j1);
+ mRS.nAllocationData3D(getIDSafe(), i, j, k, mSelectedLOD, l, i1, j1, abyte0, abyte0.length);
+ }
+
+ void copy3DRangeFromUnchecked(int i, int j, int k, int l, int i1, int j1, float af[])
+ {
+ mRS.validate();
+ validate3DRange(i, j, k, l, i1, j1);
+ mRS.nAllocationData3D(getIDSafe(), i, j, k, mSelectedLOD, l, i1, j1, af, 4 * af.length);
+ }
+
+ void copy3DRangeFromUnchecked(int i, int j, int k, int l, int i1, int j1, int ai[])
+ {
+ mRS.validate();
+ validate3DRange(i, j, k, l, i1, j1);
+ mRS.nAllocationData3D(getIDSafe(), i, j, k, mSelectedLOD, l, i1, j1, ai, 4 * ai.length);
+ }
+
+ void copy3DRangeFromUnchecked(int i, int j, int k, int l, int i1, int j1, short aword0[])
+ {
+ mRS.validate();
+ validate3DRange(i, j, k, l, i1, j1);
+ mRS.nAllocationData3D(getIDSafe(), i, j, k, mSelectedLOD, l, i1, j1, aword0, 2 * aword0.length);
+ }
+
+ public void copyFrom(Bitmap bitmap)
+ {
+ mRS.validate();
+ if(bitmap.getConfig() == null)
+ {
+ Bitmap bitmap1 = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), android.graphics.Bitmap.Config.ARGB_8888);
+ (new Canvas(bitmap1)).drawBitmap(bitmap, 0.0F, 0.0F, null);
+ copyFrom(bitmap1);
+ } else
+ {
+ validateBitmapSize(bitmap);
+ validateBitmapFormat(bitmap);
+ mRS.nAllocationCopyFromBitmap(getID(mRS), bitmap);
+ }
+ }
+
+ public void copyFrom(Allocation allocation)
+ {
+ mRS.validate();
+ if(!mType.equals(allocation.getType()))
+ {
+ throw new RSIllegalArgumentException("Types of allocations must match.");
+ } else
+ {
+ copy2DRangeFrom(0, 0, mCurrentDimX, mCurrentDimY, allocation, 0, 0);
+ return;
+ }
+ }
+
+ public void copyFrom(byte abyte0[])
+ {
+ mRS.validate();
+ if(mCurrentDimZ > 0)
+ copy3DRangeFrom(0, 0, 0, mCurrentDimX, mCurrentDimY, mCurrentDimZ, abyte0);
+ else
+ if(mCurrentDimY > 0)
+ copy2DRangeFrom(0, 0, mCurrentDimX, mCurrentDimY, abyte0);
+ else
+ copy1DRangeFrom(0, mCurrentCount, abyte0);
+ }
+
+ public void copyFrom(float af[])
+ {
+ mRS.validate();
+ if(mCurrentDimZ > 0)
+ copy3DRangeFrom(0, 0, 0, mCurrentDimX, mCurrentDimY, mCurrentDimZ, af);
+ else
+ if(mCurrentDimY > 0)
+ copy2DRangeFrom(0, 0, mCurrentDimX, mCurrentDimY, af);
+ else
+ copy1DRangeFrom(0, mCurrentCount, af);
+ }
+
+ public void copyFrom(int ai[])
+ {
+ mRS.validate();
+ if(mCurrentDimZ > 0)
+ copy3DRangeFrom(0, 0, 0, mCurrentDimX, mCurrentDimY, mCurrentDimZ, ai);
+ else
+ if(mCurrentDimY > 0)
+ copy2DRangeFrom(0, 0, mCurrentDimX, mCurrentDimY, ai);
+ else
+ copy1DRangeFrom(0, mCurrentCount, ai);
+ }
+
+ public void copyFrom(BaseObj abaseobj[])
+ {
+ mRS.validate();
+ validateIsObject();
+ if(abaseobj.length != mCurrentCount)
+ throw new RSIllegalArgumentException((new StringBuilder()).append("Array size mismatch, allocation sizeX = ").append(mCurrentCount).append(", array length = ").append(abaseobj.length).toString());
+ int ai[] = new int[abaseobj.length];
+ for(int i = 0; i < abaseobj.length; i++)
+ ai[i] = abaseobj[i].getID(mRS);
+
+ copy1DRangeFromUnchecked(0, mCurrentCount, ai);
+ }
+
+ public void copyFrom(short aword0[])
+ {
+ mRS.validate();
+ if(mCurrentDimZ > 0)
+ copy3DRangeFrom(0, 0, 0, mCurrentDimX, mCurrentDimY, mCurrentDimZ, aword0);
+ else
+ if(mCurrentDimY > 0)
+ copy2DRangeFrom(0, 0, mCurrentDimX, mCurrentDimY, aword0);
+ else
+ copy1DRangeFrom(0, mCurrentCount, aword0);
+ }
+
+ public void copyFromUnchecked(byte abyte0[])
+ {
+ mRS.validate();
+ if(mCurrentDimZ > 0)
+ copy3DRangeFromUnchecked(0, 0, 0, mCurrentDimX, mCurrentDimY, mCurrentDimZ, abyte0);
+ else
+ if(mCurrentDimY > 0)
+ copy2DRangeFromUnchecked(0, 0, mCurrentDimX, mCurrentDimY, abyte0);
+ else
+ copy1DRangeFromUnchecked(0, mCurrentCount, abyte0);
+ }
+
+ public void copyFromUnchecked(float af[])
+ {
+ mRS.validate();
+ if(mCurrentDimZ > 0)
+ copy3DRangeFromUnchecked(0, 0, 0, mCurrentDimX, mCurrentDimY, mCurrentDimZ, af);
+ else
+ if(mCurrentDimY > 0)
+ copy2DRangeFromUnchecked(0, 0, mCurrentDimX, mCurrentDimY, af);
+ else
+ copy1DRangeFromUnchecked(0, mCurrentCount, af);
+ }
+
+ public void copyFromUnchecked(int ai[])
+ {
+ mRS.validate();
+ if(mCurrentDimZ > 0)
+ copy3DRangeFromUnchecked(0, 0, 0, mCurrentDimX, mCurrentDimY, mCurrentDimZ, ai);
+ else
+ if(mCurrentDimY > 0)
+ copy2DRangeFromUnchecked(0, 0, mCurrentDimX, mCurrentDimY, ai);
+ else
+ copy1DRangeFromUnchecked(0, mCurrentCount, ai);
+ }
+
+ public void copyFromUnchecked(short aword0[])
+ {
+ mRS.validate();
+ if(mCurrentDimZ > 0)
+ copy3DRangeFromUnchecked(0, 0, 0, mCurrentDimX, mCurrentDimY, mCurrentDimZ, aword0);
+ else
+ if(mCurrentDimY > 0)
+ copy2DRangeFromUnchecked(0, 0, mCurrentDimX, mCurrentDimY, aword0);
+ else
+ copy1DRangeFromUnchecked(0, mCurrentCount, aword0);
+ }
+
+ public void copyTo(Bitmap bitmap)
+ {
+ mRS.validate();
+ validateBitmapFormat(bitmap);
+ validateBitmapSize(bitmap);
+ mRS.nAllocationCopyToBitmap(getID(mRS), bitmap);
+ }
+
+ public void copyTo(byte abyte0[])
+ {
+ validateIsInt8();
+ mRS.validate();
+ mRS.nAllocationRead(getID(mRS), abyte0);
+ }
+
+ public void copyTo(float af[])
+ {
+ validateIsFloat32();
+ mRS.validate();
+ mRS.nAllocationRead(getID(mRS), af);
+ }
+
+ public void copyTo(int ai[])
+ {
+ validateIsInt32();
+ mRS.validate();
+ mRS.nAllocationRead(getID(mRS), ai);
+ }
+
+ public void copyTo(short aword0[])
+ {
+ validateIsInt16();
+ mRS.validate();
+ mRS.nAllocationRead(getID(mRS), aword0);
+ }
+
+ protected void finalize()
+ throws Throwable
+ {
+ if(RenderScript.sUseGCHooks)
+ {
+ Method method = RenderScript.registerNativeFree;
+ Object obj = RenderScript.sRuntime;
+ Object aobj[] = new Object[1];
+ aobj[0] = Integer.valueOf(mSize);
+ method.invoke(obj, aobj);
+ }
+ super.finalize();
+ }
+
+ public void generateMipmaps()
+ {
+ mRS.nAllocationGenerateMipmaps(getID(mRS));
+ }
+
+ public int getBytesSize()
+ {
+ return mType.getCount() * mType.getElement().getBytesSize();
+ }
+
+ public Element getElement()
+ {
+ return mType.getElement();
+ }
+
+ public Type getType()
+ {
+ return mType;
+ }
+
+ public int getUsage()
+ {
+ return mUsage;
+ }
+
+ public void ioReceive()
+ {
+ if((0x20 & mUsage) == 0)
+ {
+ throw new RSIllegalArgumentException("Can only receive if IO_INPUT usage specified.");
+ } else
+ {
+ mRS.validate();
+ mRS.nAllocationIoReceive(getID(mRS));
+ return;
+ }
+ }
+
+ public void ioSend()
+ {
+ if((0x40 & mUsage) == 0)
+ {
+ throw new RSIllegalArgumentException("Can only send buffer if IO_OUTPUT usage specified.");
+ } else
+ {
+ mRS.validate();
+ mRS.nAllocationIoSend(getID(mRS));
+ return;
+ }
+ }
+
+ public void ioSendOutput()
+ {
+ ioSend();
+ }
+
+ public void setFromFieldPacker(int i, int j, FieldPacker fieldpacker)
+ {
+ mRS.validate();
+ if(j >= mType.mElement.mElements.length)
+ throw new RSIllegalArgumentException((new StringBuilder()).append("Component_number ").append(j).append(" out of range.").toString());
+ if(i < 0)
+ throw new RSIllegalArgumentException("Offset must be >= 0.");
+ byte abyte0[] = fieldpacker.getData();
+ int k = mType.mElement.mElements[j].getBytesSize() * mType.mElement.mArraySizes[j];
+ if(abyte0.length != k)
+ {
+ throw new RSIllegalArgumentException((new StringBuilder()).append("Field packer sizelength ").append(abyte0.length).append(" does not match component size ").append(k).append(".").toString());
+ } else
+ {
+ mRS.nAllocationElementData1D(getIDSafe(), i, mSelectedLOD, j, abyte0, abyte0.length);
+ return;
+ }
+ }
+
+ public void setFromFieldPacker(int i, FieldPacker fieldpacker)
+ {
+ mRS.validate();
+ int j = mType.mElement.getBytesSize();
+ byte abyte0[] = fieldpacker.getData();
+ int k = abyte0.length / j;
+ if(j * k != abyte0.length)
+ {
+ throw new RSIllegalArgumentException((new StringBuilder()).append("Field packer length ").append(abyte0.length).append(" not divisible by element size ").append(j).append(".").toString());
+ } else
+ {
+ copy1DRangeFromUnchecked(i, k, abyte0);
+ return;
+ }
+ }
+
+ public void syncAll(int i)
+ {
+ switch(i)
+ {
+ default:
+ throw new RSIllegalArgumentException("Source must be exactly one usage type.");
+
+ case 1: // '\001'
+ case 2: // '\002'
+ mRS.validate();
+ break;
+ }
+ mRS.nAllocationSyncAll(getIDSafe(), i);
+ }
+
+ public static final int USAGE_GRAPHICS_TEXTURE = 2;
+ public static final int USAGE_IO_INPUT = 32;
+ public static final int USAGE_IO_OUTPUT = 64;
+ public static final int USAGE_SCRIPT = 1;
+ public static final int USAGE_SHARED = 128;
+ static android.graphics.BitmapFactory.Options mBitmapOptions;
+ Allocation mAdaptedAllocation;
+ Bitmap mBitmap;
+ boolean mConstrainedFace;
+ boolean mConstrainedLOD;
+ boolean mConstrainedY;
+ boolean mConstrainedZ;
+ int mCurrentCount;
+ int mCurrentDimX;
+ int mCurrentDimY;
+ int mCurrentDimZ;
+ boolean mReadAllowed;
+ Type.CubemapFace mSelectedFace;
+ int mSelectedLOD;
+ int mSelectedY;
+ int mSelectedZ;
+ int mSize;
+ Type mType;
+ int mUsage;
+ boolean mWriteAllowed;
+
+ static
+ {
+ mBitmapOptions = new android.graphics.BitmapFactory.Options();
+ mBitmapOptions.inScaled = false;
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/AllocationThunker.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/AllocationThunker.java
new file mode 100644
index 0000000..bfe1ce9
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/AllocationThunker.java
@@ -0,0 +1,741 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+import android.content.res.Resources;
+import android.graphics.Bitmap;
+import android.renderscript.*;
+
+// Referenced classes of package android.support.v8.renderscript:
+// Allocation, RenderScriptThunker, TypeThunker, ExceptionThunker,
+// ElementThunker, Element, BaseObj, Type,
+// FieldPacker, RenderScript
+
+class AllocationThunker extends android.support.v8.renderscript.Allocation
+{
+
+ AllocationThunker(RenderScript renderscript, Type type, int i, Allocation allocation)
+ {
+ super(0, renderscript, type, i);
+ mType = type;
+ mUsage = i;
+ mN = allocation;
+ }
+
+ static android.renderscript.Allocation.MipmapControl convertMipmapControl(Allocation.MipmapControl mipmapcontrol)
+ {
+ class _cls1
+ {
+
+ static final int $SwitchMap$android$support$v8$renderscript$Allocation$MipmapControl[];
+
+ static
+ {
+ $SwitchMap$android$support$v8$renderscript$Allocation$MipmapControl = new int[Allocation.MipmapControl.values().length];
+ NoSuchFieldError nosuchfielderror2;
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Allocation$MipmapControl[Allocation.MipmapControl.MIPMAP_NONE.ordinal()] = 1;
+ }
+ catch(NoSuchFieldError nosuchfielderror) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Allocation$MipmapControl[Allocation.MipmapControl.MIPMAP_FULL.ordinal()] = 2;
+ }
+ catch(NoSuchFieldError nosuchfielderror1) { }
+ $SwitchMap$android$support$v8$renderscript$Allocation$MipmapControl[Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE.ordinal()] = 3;
+_L2:
+ return;
+ nosuchfielderror2;
+ if(true) goto _L2; else goto _L1
+_L1:
+ }
+ }
+
+ _cls1..SwitchMap.android.support.v8.renderscript.Allocation.MipmapControl[mipmapcontrol.ordinal()];
+ JVM INSTR tableswitch 1 3: default 36
+ // 1 40
+ // 2 47
+ // 3 54;
+ goto _L1 _L2 _L3 _L4
+_L1:
+ android.renderscript.Allocation.MipmapControl mipmapcontrol1 = null;
+_L6:
+ return mipmapcontrol1;
+_L2:
+ mipmapcontrol1 = android.renderscript.Allocation.MipmapControl.MIPMAP_NONE;
+ continue; /* Loop/switch isn't completed */
+_L3:
+ mipmapcontrol1 = android.renderscript.Allocation.MipmapControl.MIPMAP_FULL;
+ continue; /* Loop/switch isn't completed */
+_L4:
+ mipmapcontrol1 = android.renderscript.Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE;
+ if(true) goto _L6; else goto _L5
+_L5:
+ }
+
+ public static android.support.v8.renderscript.Allocation createCubemapFromBitmap(RenderScript renderscript, Bitmap bitmap, Allocation.MipmapControl mipmapcontrol, int i)
+ {
+ RenderScriptThunker renderscriptthunker = (RenderScriptThunker)renderscript;
+ AllocationThunker allocationthunker;
+ try
+ {
+ Allocation allocation = Allocation.createCubemapFromBitmap(renderscriptthunker.mN, bitmap, convertMipmapControl(mipmapcontrol), i);
+ allocationthunker = new AllocationThunker(renderscript, new TypeThunker(renderscript, allocation.getType()), i, allocation);
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return allocationthunker;
+ }
+
+ public static android.support.v8.renderscript.Allocation createCubemapFromCubeFaces(RenderScript renderscript, Bitmap bitmap, Bitmap bitmap1, Bitmap bitmap2, Bitmap bitmap3, Bitmap bitmap4, Bitmap bitmap5, Allocation.MipmapControl mipmapcontrol,
+ int i)
+ {
+ RenderScriptThunker renderscriptthunker = (RenderScriptThunker)renderscript;
+ AllocationThunker allocationthunker;
+ try
+ {
+ Allocation allocation = Allocation.createCubemapFromCubeFaces(renderscriptthunker.mN, bitmap, bitmap1, bitmap2, bitmap3, bitmap4, bitmap5, convertMipmapControl(mipmapcontrol), i);
+ allocationthunker = new AllocationThunker(renderscript, new TypeThunker(renderscript, allocation.getType()), i, allocation);
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return allocationthunker;
+ }
+
+ public static android.support.v8.renderscript.Allocation createFromBitmap(RenderScript renderscript, Bitmap bitmap, Allocation.MipmapControl mipmapcontrol, int i)
+ {
+ RenderScriptThunker renderscriptthunker = (RenderScriptThunker)renderscript;
+ AllocationThunker allocationthunker;
+ try
+ {
+ Allocation allocation = Allocation.createFromBitmap(renderscriptthunker.mN, bitmap, convertMipmapControl(mipmapcontrol), i);
+ allocationthunker = new AllocationThunker(renderscript, new TypeThunker(renderscript, allocation.getType()), i, allocation);
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return allocationthunker;
+ }
+
+ public static android.support.v8.renderscript.Allocation createFromBitmapResource(RenderScript renderscript, Resources resources, int i, Allocation.MipmapControl mipmapcontrol, int j)
+ {
+ RenderScriptThunker renderscriptthunker = (RenderScriptThunker)renderscript;
+ AllocationThunker allocationthunker;
+ try
+ {
+ Allocation allocation = Allocation.createFromBitmapResource(renderscriptthunker.mN, resources, i, convertMipmapControl(mipmapcontrol), j);
+ allocationthunker = new AllocationThunker(renderscript, new TypeThunker(renderscript, allocation.getType()), j, allocation);
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return allocationthunker;
+ }
+
+ public static android.support.v8.renderscript.Allocation createFromString(RenderScript renderscript, String s, int i)
+ {
+ RenderScriptThunker renderscriptthunker = (RenderScriptThunker)renderscript;
+ AllocationThunker allocationthunker;
+ try
+ {
+ Allocation allocation = Allocation.createFromString(renderscriptthunker.mN, s, i);
+ allocationthunker = new AllocationThunker(renderscript, new TypeThunker(renderscript, allocation.getType()), i, allocation);
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return allocationthunker;
+ }
+
+ public static android.support.v8.renderscript.Allocation createSized(RenderScript renderscript, android.support.v8.renderscript.Element element, int i, int j)
+ {
+ RenderScriptThunker renderscriptthunker = (RenderScriptThunker)renderscript;
+ ElementThunker _tmp = (ElementThunker)element;
+ AllocationThunker allocationthunker;
+ try
+ {
+ Allocation allocation = Allocation.createSized(renderscriptthunker.mN, (Element)element.getNObj(), i, j);
+ allocationthunker = new AllocationThunker(renderscript, new TypeThunker(renderscript, allocation.getType()), j, allocation);
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return allocationthunker;
+ }
+
+ public static android.support.v8.renderscript.Allocation createTyped(RenderScript renderscript, Type type, Allocation.MipmapControl mipmapcontrol, int i)
+ {
+ RenderScriptThunker renderscriptthunker = (RenderScriptThunker)renderscript;
+ TypeThunker typethunker = (TypeThunker)type;
+ AllocationThunker allocationthunker;
+ try
+ {
+ allocationthunker = new AllocationThunker(renderscript, type, i, Allocation.createTyped(renderscriptthunker.mN, typethunker.mN, convertMipmapControl(mipmapcontrol), i));
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return allocationthunker;
+ }
+
+ public void copy1DRangeFrom(int i, int j, android.support.v8.renderscript.Allocation allocation, int k)
+ {
+ try
+ {
+ AllocationThunker allocationthunker = (AllocationThunker)allocation;
+ mN.copy1DRangeFrom(i, j, allocationthunker.mN, k);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void copy1DRangeFrom(int i, int j, byte abyte0[])
+ {
+ try
+ {
+ mN.copy1DRangeFrom(i, j, abyte0);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void copy1DRangeFrom(int i, int j, float af[])
+ {
+ try
+ {
+ mN.copy1DRangeFrom(i, j, af);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void copy1DRangeFrom(int i, int j, int ai[])
+ {
+ try
+ {
+ mN.copy1DRangeFrom(i, j, ai);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void copy1DRangeFrom(int i, int j, short aword0[])
+ {
+ try
+ {
+ mN.copy1DRangeFrom(i, j, aword0);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void copy1DRangeFromUnchecked(int i, int j, byte abyte0[])
+ {
+ try
+ {
+ mN.copy1DRangeFromUnchecked(i, j, abyte0);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void copy1DRangeFromUnchecked(int i, int j, float af[])
+ {
+ try
+ {
+ mN.copy1DRangeFromUnchecked(i, j, af);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void copy1DRangeFromUnchecked(int i, int j, int ai[])
+ {
+ try
+ {
+ mN.copy1DRangeFromUnchecked(i, j, ai);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void copy1DRangeFromUnchecked(int i, int j, short aword0[])
+ {
+ try
+ {
+ mN.copy1DRangeFromUnchecked(i, j, aword0);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void copy2DRangeFrom(int i, int j, int k, int l, android.support.v8.renderscript.Allocation allocation, int i1, int j1)
+ {
+ try
+ {
+ AllocationThunker allocationthunker = (AllocationThunker)allocation;
+ mN.copy2DRangeFrom(i, j, k, l, allocationthunker.mN, i1, j1);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void copy2DRangeFrom(int i, int j, int k, int l, byte abyte0[])
+ {
+ try
+ {
+ mN.copy2DRangeFrom(i, j, k, l, abyte0);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void copy2DRangeFrom(int i, int j, int k, int l, float af[])
+ {
+ try
+ {
+ mN.copy2DRangeFrom(i, j, k, l, af);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void copy2DRangeFrom(int i, int j, int k, int l, int ai[])
+ {
+ try
+ {
+ mN.copy2DRangeFrom(i, j, k, l, ai);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void copy2DRangeFrom(int i, int j, int k, int l, short aword0[])
+ {
+ try
+ {
+ mN.copy2DRangeFrom(i, j, k, l, aword0);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void copy2DRangeFrom(int i, int j, Bitmap bitmap)
+ {
+ try
+ {
+ mN.copy2DRangeFrom(i, j, bitmap);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void copyFrom(Bitmap bitmap)
+ {
+ try
+ {
+ mN.copyFrom(bitmap);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void copyFrom(android.support.v8.renderscript.Allocation allocation)
+ {
+ AllocationThunker allocationthunker = (AllocationThunker)allocation;
+ try
+ {
+ mN.copyFrom(allocationthunker.mN);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void copyFrom(byte abyte0[])
+ {
+ try
+ {
+ mN.copyFrom(abyte0);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void copyFrom(float af[])
+ {
+ try
+ {
+ mN.copyFrom(af);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void copyFrom(int ai[])
+ {
+ try
+ {
+ mN.copyFrom(ai);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void copyFrom(android.support.v8.renderscript.BaseObj abaseobj[])
+ {
+ if(abaseobj != null)
+ {
+ BaseObj abaseobj1[] = new BaseObj[abaseobj.length];
+ for(int i = 0; i < abaseobj.length; i++)
+ abaseobj1[i] = abaseobj[i].getNObj();
+
+ try
+ {
+ mN.copyFrom(abaseobj1);
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+ }
+
+ public void copyFrom(short aword0[])
+ {
+ try
+ {
+ mN.copyFrom(aword0);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void copyFromUnchecked(byte abyte0[])
+ {
+ try
+ {
+ mN.copyFromUnchecked(abyte0);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void copyFromUnchecked(float af[])
+ {
+ try
+ {
+ mN.copyFromUnchecked(af);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void copyFromUnchecked(int ai[])
+ {
+ try
+ {
+ mN.copyFromUnchecked(ai);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void copyFromUnchecked(short aword0[])
+ {
+ try
+ {
+ mN.copyFromUnchecked(aword0);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void copyTo(Bitmap bitmap)
+ {
+ try
+ {
+ mN.copyTo(bitmap);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void copyTo(byte abyte0[])
+ {
+ try
+ {
+ mN.copyTo(abyte0);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void copyTo(float af[])
+ {
+ try
+ {
+ mN.copyTo(af);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void copyTo(int ai[])
+ {
+ try
+ {
+ mN.copyTo(ai);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void copyTo(short aword0[])
+ {
+ try
+ {
+ mN.copyTo(aword0);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void generateMipmaps()
+ {
+ try
+ {
+ mN.generateMipmaps();
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public int getBytesSize()
+ {
+ int i;
+ try
+ {
+ i = mN.getBytesSize();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return i;
+ }
+
+ public android.support.v8.renderscript.Element getElement()
+ {
+ return getType().getElement();
+ }
+
+ Allocation getNObj()
+ {
+ return mN;
+ }
+
+ volatile BaseObj getNObj()
+ {
+ return getNObj();
+ }
+
+ public Type getType()
+ {
+ return TypeThunker.find(mN.getType());
+ }
+
+ public int getUsage()
+ {
+ int i;
+ try
+ {
+ i = mN.getUsage();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return i;
+ }
+
+ public void ioReceive()
+ {
+ try
+ {
+ mN.ioReceive();
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void ioSend()
+ {
+ try
+ {
+ mN.ioSend();
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void setFromFieldPacker(int i, int j, android.support.v8.renderscript.FieldPacker fieldpacker)
+ {
+ try
+ {
+ FieldPacker fieldpacker1 = new FieldPacker(fieldpacker.getData());
+ mN.setFromFieldPacker(i, j, fieldpacker1);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void setFromFieldPacker(int i, android.support.v8.renderscript.FieldPacker fieldpacker)
+ {
+ try
+ {
+ FieldPacker fieldpacker1 = new FieldPacker(fieldpacker.getData());
+ mN.setFromFieldPacker(i, fieldpacker1);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void syncAll(int i)
+ {
+ try
+ {
+ mN.syncAll(i);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ static android.graphics.BitmapFactory.Options mBitmapOptions;
+ Allocation mN;
+
+ static
+ {
+ mBitmapOptions = new android.graphics.BitmapFactory.Options();
+ mBitmapOptions.inScaled = false;
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/BaseObj.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/BaseObj.java
new file mode 100644
index 0000000..cc6c66b
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/BaseObj.java
@@ -0,0 +1,135 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+// Referenced classes of package android.support.v8.renderscript:
+// RenderScript, RSIllegalArgumentException, RSInvalidStateException, RenderScriptThunker,
+// RSRuntimeException
+
+public class BaseObj
+{
+
+ BaseObj(int i, RenderScript renderscript)
+ {
+ renderscript.validate();
+ mRS = renderscript;
+ mID = i;
+ mDestroyed = false;
+ }
+
+ void checkValid()
+ {
+ if(mID == 0 && getNObj() == null)
+ throw new RSIllegalArgumentException("Invalid object.");
+ else
+ return;
+ }
+
+ /**
+ * @deprecated Method destroy is deprecated
+ */
+
+ public void destroy()
+ {
+ this;
+ JVM INSTR monitorenter ;
+ if(mDestroyed)
+ throw new RSInvalidStateException("Object already destroyed.");
+ break MISSING_BLOCK_LABEL_24;
+ Exception exception;
+ exception;
+ this;
+ JVM INSTR monitorexit ;
+ throw exception;
+ mDestroyed = true;
+ mRS.nObjDestroy(mID);
+ this;
+ JVM INSTR monitorexit ;
+ }
+
+ public boolean equals(Object obj)
+ {
+ boolean flag = true;
+ if(this != obj) goto _L2; else goto _L1
+_L1:
+ return flag;
+_L2:
+ if(getClass() != obj.getClass())
+ {
+ flag = false;
+ } else
+ {
+ BaseObj baseobj = (BaseObj)obj;
+ if(mID != baseobj.mID)
+ flag = false;
+ }
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ protected void finalize()
+ throws Throwable
+ {
+ if(!mDestroyed)
+ {
+ if(mID != 0 && mRS.isAlive())
+ mRS.nObjDestroy(mID);
+ mRS = null;
+ mID = 0;
+ mDestroyed = true;
+ }
+ super.finalize();
+ }
+
+ int getID(RenderScript renderscript)
+ {
+ mRS.validate();
+ if(!RenderScript.isNative) goto _L2; else goto _L1
+_L1:
+ (RenderScriptThunker)renderscript;
+ if(getNObj() == null) goto _L2; else goto _L3
+_L3:
+ int i = getNObj().hashCode();
+_L5:
+ return i;
+_L2:
+ if(mDestroyed)
+ throw new RSInvalidStateException("using a destroyed object.");
+ if(mID == 0)
+ throw new RSRuntimeException("Internal error: Object id 0.");
+ if(renderscript != null && renderscript != mRS)
+ throw new RSInvalidStateException("using object with mismatched context.");
+ i = mID;
+ if(true) goto _L5; else goto _L4
+_L4:
+ }
+
+ android.renderscript.BaseObj getNObj()
+ {
+ return null;
+ }
+
+ public int hashCode()
+ {
+ return mID;
+ }
+
+ void setID(int i)
+ {
+ if(mID != 0)
+ {
+ throw new RSRuntimeException("Internal Error, reset of object ID.");
+ } else
+ {
+ mID = i;
+ return;
+ }
+ }
+
+ private boolean mDestroyed;
+ private int mID;
+ RenderScript mRS;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Byte2.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Byte2.java
new file mode 100644
index 0000000..acbe200
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Byte2.java
@@ -0,0 +1,23 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+public class Byte2
+{
+
+ public Byte2()
+ {
+ }
+
+ public Byte2(byte byte0, byte byte1)
+ {
+ x = byte0;
+ y = byte1;
+ }
+
+ public byte x;
+ public byte y;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Byte3.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Byte3.java
new file mode 100644
index 0000000..dd88f9e
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Byte3.java
@@ -0,0 +1,25 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+public class Byte3
+{
+
+ public Byte3()
+ {
+ }
+
+ public Byte3(byte byte0, byte byte1, byte byte2)
+ {
+ x = byte0;
+ y = byte1;
+ z = byte2;
+ }
+
+ public byte x;
+ public byte y;
+ public byte z;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Byte4.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Byte4.java
new file mode 100644
index 0000000..561b1f6
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Byte4.java
@@ -0,0 +1,27 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+public class Byte4
+{
+
+ public Byte4()
+ {
+ }
+
+ public Byte4(byte byte0, byte byte1, byte byte2, byte byte3)
+ {
+ x = byte0;
+ y = byte1;
+ z = byte2;
+ w = byte3;
+ }
+
+ public byte w;
+ public byte x;
+ public byte y;
+ public byte z;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Double2.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Double2.java
new file mode 100644
index 0000000..69e538a
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Double2.java
@@ -0,0 +1,23 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+public class Double2
+{
+
+ public Double2()
+ {
+ }
+
+ public Double2(double d, double d1)
+ {
+ x = d;
+ y = d1;
+ }
+
+ public double x;
+ public double y;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Double3.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Double3.java
new file mode 100644
index 0000000..a6057a4
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Double3.java
@@ -0,0 +1,25 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+public class Double3
+{
+
+ public Double3()
+ {
+ }
+
+ public Double3(double d, double d1, double d2)
+ {
+ x = d;
+ y = d1;
+ z = d2;
+ }
+
+ public double x;
+ public double y;
+ public double z;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Double4.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Double4.java
new file mode 100644
index 0000000..8456920
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Double4.java
@@ -0,0 +1,27 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+public class Double4
+{
+
+ public Double4()
+ {
+ }
+
+ public Double4(double d, double d1, double d2, double d3)
+ {
+ x = d;
+ y = d1;
+ z = d2;
+ w = d3;
+ }
+
+ public double w;
+ public double x;
+ public double y;
+ public double z;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Element.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Element.java
new file mode 100644
index 0000000..4532bc9
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Element.java
@@ -0,0 +1,1020 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+// Referenced classes of package android.support.v8.renderscript:
+// BaseObj, RenderScript, RenderScriptThunker, ElementThunker,
+// RSIllegalArgumentException
+
+public class Element extends BaseObj
+{
+ public static class Builder
+ {
+
+ public Builder add(Element element, String s)
+ {
+ return add(element, s, 1);
+ }
+
+ public Builder add(Element element, String s, int i)
+ {
+ if(mT != null)
+ {
+ mT.add(element, s, i);
+ } else
+ {
+ if(i < 1)
+ throw new RSIllegalArgumentException("Array size cannot be less than 1.");
+ if(mSkipPadding != 0 && s.startsWith("#padding_"))
+ {
+ mSkipPadding = 0;
+ } else
+ {
+ if(element.mVectorSize == 3)
+ mSkipPadding = 1;
+ else
+ mSkipPadding = 0;
+ if(mCount == mElements.length)
+ {
+ Element aelement[] = new Element[8 + mCount];
+ String as[] = new String[8 + mCount];
+ int ai[] = new int[8 + mCount];
+ System.arraycopy(mElements, 0, aelement, 0, mCount);
+ System.arraycopy(mElementNames, 0, as, 0, mCount);
+ System.arraycopy(mArraySizes, 0, ai, 0, mCount);
+ mElements = aelement;
+ mElementNames = as;
+ mArraySizes = ai;
+ }
+ mElements[mCount] = element;
+ mElementNames[mCount] = s;
+ mArraySizes[mCount] = i;
+ mCount = 1 + mCount;
+ }
+ }
+ return this;
+ }
+
+ public Element create()
+ {
+ Element element;
+ if(mT != null)
+ {
+ element = mT.create(mRS);
+ } else
+ {
+ mRS.validate();
+ Element aelement[] = new Element[mCount];
+ String as[] = new String[mCount];
+ int ai[] = new int[mCount];
+ System.arraycopy(mElements, 0, aelement, 0, mCount);
+ System.arraycopy(mElementNames, 0, as, 0, mCount);
+ System.arraycopy(mArraySizes, 0, ai, 0, mCount);
+ int ai1[] = new int[aelement.length];
+ for(int i = 0; i < aelement.length; i++)
+ ai1[i] = aelement[i].getID(mRS);
+
+ element = new Element(mRS.nElementCreate2(ai1, as, ai), mRS, aelement, as, ai);
+ }
+ return element;
+ }
+
+ int mArraySizes[];
+ int mCount;
+ String mElementNames[];
+ Element mElements[];
+ RenderScript mRS;
+ int mSkipPadding;
+ ElementThunker.BuilderThunker mT;
+
+ public Builder(RenderScript renderscript)
+ {
+ if(RenderScript.isNative)
+ {
+ RenderScriptThunker _tmp = (RenderScriptThunker)renderscript;
+ mT = new ElementThunker.BuilderThunker(renderscript);
+ }
+ mRS = renderscript;
+ mCount = 0;
+ mElements = new Element[8];
+ mElementNames = new String[8];
+ mArraySizes = new int[8];
+ }
+ }
+
+ public static final class DataKind extends Enum
+ {
+
+ public static DataKind valueOf(String s)
+ {
+ return (DataKind)Enum.valueOf(android/support/v8/renderscript/Element$DataKind, s);
+ }
+
+ public static DataKind[] values()
+ {
+ return (DataKind[])$VALUES.clone();
+ }
+
+ private static final DataKind $VALUES[];
+ public static final DataKind PIXEL_A;
+ public static final DataKind PIXEL_DEPTH;
+ public static final DataKind PIXEL_L;
+ public static final DataKind PIXEL_LA;
+ public static final DataKind PIXEL_RGB;
+ public static final DataKind PIXEL_RGBA;
+ public static final DataKind PIXEL_YUV;
+ public static final DataKind USER;
+ int mID;
+
+ static
+ {
+ USER = new DataKind("USER", 0, 0);
+ PIXEL_L = new DataKind("PIXEL_L", 1, 7);
+ PIXEL_A = new DataKind("PIXEL_A", 2, 8);
+ PIXEL_LA = new DataKind("PIXEL_LA", 3, 9);
+ PIXEL_RGB = new DataKind("PIXEL_RGB", 4, 10);
+ PIXEL_RGBA = new DataKind("PIXEL_RGBA", 5, 11);
+ PIXEL_DEPTH = new DataKind("PIXEL_DEPTH", 6, 12);
+ PIXEL_YUV = new DataKind("PIXEL_YUV", 7, 13);
+ DataKind adatakind[] = new DataKind[8];
+ adatakind[0] = USER;
+ adatakind[1] = PIXEL_L;
+ adatakind[2] = PIXEL_A;
+ adatakind[3] = PIXEL_LA;
+ adatakind[4] = PIXEL_RGB;
+ adatakind[5] = PIXEL_RGBA;
+ adatakind[6] = PIXEL_DEPTH;
+ adatakind[7] = PIXEL_YUV;
+ $VALUES = adatakind;
+ }
+
+ private DataKind(String s, int i, int j)
+ {
+ super(s, i);
+ mID = j;
+ }
+ }
+
+ public static final class DataType extends Enum
+ {
+
+ public static DataType valueOf(String s)
+ {
+ return (DataType)Enum.valueOf(android/support/v8/renderscript/Element$DataType, s);
+ }
+
+ public static DataType[] values()
+ {
+ return (DataType[])$VALUES.clone();
+ }
+
+ private static final DataType $VALUES[];
+ public static final DataType BOOLEAN;
+ public static final DataType FLOAT_32;
+ public static final DataType FLOAT_64;
+ public static final DataType MATRIX_2X2;
+ public static final DataType MATRIX_3X3;
+ public static final DataType MATRIX_4X4;
+ public static final DataType NONE;
+ public static final DataType RS_ALLOCATION;
+ public static final DataType RS_ELEMENT;
+ public static final DataType RS_SAMPLER;
+ public static final DataType RS_SCRIPT;
+ public static final DataType RS_TYPE;
+ public static final DataType SIGNED_16;
+ public static final DataType SIGNED_32;
+ public static final DataType SIGNED_64;
+ public static final DataType SIGNED_8;
+ public static final DataType UNSIGNED_16;
+ public static final DataType UNSIGNED_32;
+ public static final DataType UNSIGNED_4_4_4_4;
+ public static final DataType UNSIGNED_5_5_5_1;
+ public static final DataType UNSIGNED_5_6_5;
+ public static final DataType UNSIGNED_64;
+ public static final DataType UNSIGNED_8;
+ int mID;
+ int mSize;
+
+ static
+ {
+ NONE = new DataType("NONE", 0, 0, 0);
+ FLOAT_32 = new DataType("FLOAT_32", 1, 2, 4);
+ FLOAT_64 = new DataType("FLOAT_64", 2, 3, 8);
+ SIGNED_8 = new DataType("SIGNED_8", 3, 4, 1);
+ SIGNED_16 = new DataType("SIGNED_16", 4, 5, 2);
+ SIGNED_32 = new DataType("SIGNED_32", 5, 6, 4);
+ SIGNED_64 = new DataType("SIGNED_64", 6, 7, 8);
+ UNSIGNED_8 = new DataType("UNSIGNED_8", 7, 8, 1);
+ UNSIGNED_16 = new DataType("UNSIGNED_16", 8, 9, 2);
+ UNSIGNED_32 = new DataType("UNSIGNED_32", 9, 10, 4);
+ UNSIGNED_64 = new DataType("UNSIGNED_64", 10, 11, 8);
+ BOOLEAN = new DataType("BOOLEAN", 11, 12, 1);
+ UNSIGNED_5_6_5 = new DataType("UNSIGNED_5_6_5", 12, 13, 2);
+ UNSIGNED_5_5_5_1 = new DataType("UNSIGNED_5_5_5_1", 13, 14, 2);
+ UNSIGNED_4_4_4_4 = new DataType("UNSIGNED_4_4_4_4", 14, 15, 2);
+ MATRIX_4X4 = new DataType("MATRIX_4X4", 15, 16, 64);
+ MATRIX_3X3 = new DataType("MATRIX_3X3", 16, 17, 36);
+ MATRIX_2X2 = new DataType("MATRIX_2X2", 17, 18, 16);
+ RS_ELEMENT = new DataType("RS_ELEMENT", 18, 1000, 4);
+ RS_TYPE = new DataType("RS_TYPE", 19, 1001, 4);
+ RS_ALLOCATION = new DataType("RS_ALLOCATION", 20, 1002, 4);
+ RS_SAMPLER = new DataType("RS_SAMPLER", 21, 1003, 4);
+ RS_SCRIPT = new DataType("RS_SCRIPT", 22, 1004, 4);
+ DataType adatatype[] = new DataType[23];
+ adatatype[0] = NONE;
+ adatatype[1] = FLOAT_32;
+ adatatype[2] = FLOAT_64;
+ adatatype[3] = SIGNED_8;
+ adatatype[4] = SIGNED_16;
+ adatatype[5] = SIGNED_32;
+ adatatype[6] = SIGNED_64;
+ adatatype[7] = UNSIGNED_8;
+ adatatype[8] = UNSIGNED_16;
+ adatatype[9] = UNSIGNED_32;
+ adatatype[10] = UNSIGNED_64;
+ adatatype[11] = BOOLEAN;
+ adatatype[12] = UNSIGNED_5_6_5;
+ adatatype[13] = UNSIGNED_5_5_5_1;
+ adatatype[14] = UNSIGNED_4_4_4_4;
+ adatatype[15] = MATRIX_4X4;
+ adatatype[16] = MATRIX_3X3;
+ adatatype[17] = MATRIX_2X2;
+ adatatype[18] = RS_ELEMENT;
+ adatatype[19] = RS_TYPE;
+ adatatype[20] = RS_ALLOCATION;
+ adatatype[21] = RS_SAMPLER;
+ adatatype[22] = RS_SCRIPT;
+ $VALUES = adatatype;
+ }
+
+ private DataType(String s, int i, int j, int k)
+ {
+ super(s, i);
+ mID = j;
+ mSize = k;
+ }
+ }
+
+
+ Element(int i, RenderScript renderscript)
+ {
+ super(i, renderscript);
+ }
+
+ Element(int i, RenderScript renderscript, DataType datatype, DataKind datakind, boolean flag, int j)
+ {
+ super(i, renderscript);
+ if(datatype != DataType.UNSIGNED_5_6_5 && datatype != DataType.UNSIGNED_4_4_4_4 && datatype != DataType.UNSIGNED_5_5_5_1)
+ {
+ if(j == 3)
+ mSize = 4 * datatype.mSize;
+ else
+ mSize = j * datatype.mSize;
+ } else
+ {
+ mSize = datatype.mSize;
+ }
+ mType = datatype;
+ mKind = datakind;
+ mNormalized = flag;
+ mVectorSize = j;
+ }
+
+ Element(int i, RenderScript renderscript, Element aelement[], String as[], int ai[])
+ {
+ super(i, renderscript);
+ mSize = 0;
+ mVectorSize = 1;
+ mElements = aelement;
+ mElementNames = as;
+ mArraySizes = ai;
+ mType = DataType.NONE;
+ mKind = DataKind.USER;
+ mOffsetInBytes = new int[mElements.length];
+ for(int j = 0; j < mElements.length; j++)
+ {
+ mOffsetInBytes[j] = mSize;
+ mSize = mSize + mElements[j].mSize * mArraySizes[j];
+ }
+
+ updateVisibleSubElements();
+ }
+
+ public static Element ALLOCATION(RenderScript renderscript)
+ {
+ if(renderscript.mElement_ALLOCATION == null)
+ renderscript.mElement_ALLOCATION = createUser(renderscript, DataType.RS_ALLOCATION);
+ return renderscript.mElement_ALLOCATION;
+ }
+
+ public static Element A_8(RenderScript renderscript)
+ {
+ if(renderscript.mElement_A_8 == null)
+ renderscript.mElement_A_8 = createPixel(renderscript, DataType.UNSIGNED_8, DataKind.PIXEL_A);
+ return renderscript.mElement_A_8;
+ }
+
+ public static Element BOOLEAN(RenderScript renderscript)
+ {
+ if(renderscript.mElement_BOOLEAN == null)
+ renderscript.mElement_BOOLEAN = createUser(renderscript, DataType.BOOLEAN);
+ return renderscript.mElement_BOOLEAN;
+ }
+
+ public static Element ELEMENT(RenderScript renderscript)
+ {
+ if(renderscript.mElement_ELEMENT == null)
+ renderscript.mElement_ELEMENT = createUser(renderscript, DataType.RS_ELEMENT);
+ return renderscript.mElement_ELEMENT;
+ }
+
+ public static Element F32(RenderScript renderscript)
+ {
+ if(renderscript.mElement_F32 == null)
+ renderscript.mElement_F32 = createUser(renderscript, DataType.FLOAT_32);
+ return renderscript.mElement_F32;
+ }
+
+ public static Element F32_2(RenderScript renderscript)
+ {
+ if(renderscript.mElement_FLOAT_2 == null)
+ renderscript.mElement_FLOAT_2 = createVector(renderscript, DataType.FLOAT_32, 2);
+ return renderscript.mElement_FLOAT_2;
+ }
+
+ public static Element F32_3(RenderScript renderscript)
+ {
+ if(renderscript.mElement_FLOAT_3 == null)
+ renderscript.mElement_FLOAT_3 = createVector(renderscript, DataType.FLOAT_32, 3);
+ return renderscript.mElement_FLOAT_3;
+ }
+
+ public static Element F32_4(RenderScript renderscript)
+ {
+ if(renderscript.mElement_FLOAT_4 == null)
+ renderscript.mElement_FLOAT_4 = createVector(renderscript, DataType.FLOAT_32, 4);
+ return renderscript.mElement_FLOAT_4;
+ }
+
+ public static Element F64(RenderScript renderscript)
+ {
+ if(renderscript.mElement_F64 == null)
+ renderscript.mElement_F64 = createUser(renderscript, DataType.FLOAT_64);
+ return renderscript.mElement_F64;
+ }
+
+ public static Element F64_2(RenderScript renderscript)
+ {
+ if(renderscript.mElement_DOUBLE_2 == null)
+ renderscript.mElement_DOUBLE_2 = createVector(renderscript, DataType.FLOAT_64, 2);
+ return renderscript.mElement_DOUBLE_2;
+ }
+
+ public static Element F64_3(RenderScript renderscript)
+ {
+ if(renderscript.mElement_DOUBLE_3 == null)
+ renderscript.mElement_DOUBLE_3 = createVector(renderscript, DataType.FLOAT_64, 3);
+ return renderscript.mElement_DOUBLE_3;
+ }
+
+ public static Element F64_4(RenderScript renderscript)
+ {
+ if(renderscript.mElement_DOUBLE_4 == null)
+ renderscript.mElement_DOUBLE_4 = createVector(renderscript, DataType.FLOAT_64, 4);
+ return renderscript.mElement_DOUBLE_4;
+ }
+
+ public static Element I16(RenderScript renderscript)
+ {
+ if(renderscript.mElement_I16 == null)
+ renderscript.mElement_I16 = createUser(renderscript, DataType.SIGNED_16);
+ return renderscript.mElement_I16;
+ }
+
+ public static Element I16_2(RenderScript renderscript)
+ {
+ if(renderscript.mElement_SHORT_2 == null)
+ renderscript.mElement_SHORT_2 = createVector(renderscript, DataType.SIGNED_16, 2);
+ return renderscript.mElement_SHORT_2;
+ }
+
+ public static Element I16_3(RenderScript renderscript)
+ {
+ if(renderscript.mElement_SHORT_3 == null)
+ renderscript.mElement_SHORT_3 = createVector(renderscript, DataType.SIGNED_16, 3);
+ return renderscript.mElement_SHORT_3;
+ }
+
+ public static Element I16_4(RenderScript renderscript)
+ {
+ if(renderscript.mElement_SHORT_4 == null)
+ renderscript.mElement_SHORT_4 = createVector(renderscript, DataType.SIGNED_16, 4);
+ return renderscript.mElement_SHORT_4;
+ }
+
+ public static Element I32(RenderScript renderscript)
+ {
+ if(renderscript.mElement_I32 == null)
+ renderscript.mElement_I32 = createUser(renderscript, DataType.SIGNED_32);
+ return renderscript.mElement_I32;
+ }
+
+ public static Element I32_2(RenderScript renderscript)
+ {
+ if(renderscript.mElement_INT_2 == null)
+ renderscript.mElement_INT_2 = createVector(renderscript, DataType.SIGNED_32, 2);
+ return renderscript.mElement_INT_2;
+ }
+
+ public static Element I32_3(RenderScript renderscript)
+ {
+ if(renderscript.mElement_INT_3 == null)
+ renderscript.mElement_INT_3 = createVector(renderscript, DataType.SIGNED_32, 3);
+ return renderscript.mElement_INT_3;
+ }
+
+ public static Element I32_4(RenderScript renderscript)
+ {
+ if(renderscript.mElement_INT_4 == null)
+ renderscript.mElement_INT_4 = createVector(renderscript, DataType.SIGNED_32, 4);
+ return renderscript.mElement_INT_4;
+ }
+
+ public static Element I64(RenderScript renderscript)
+ {
+ if(renderscript.mElement_I64 == null)
+ renderscript.mElement_I64 = createUser(renderscript, DataType.SIGNED_64);
+ return renderscript.mElement_I64;
+ }
+
+ public static Element I64_2(RenderScript renderscript)
+ {
+ if(renderscript.mElement_LONG_2 == null)
+ renderscript.mElement_LONG_2 = createVector(renderscript, DataType.SIGNED_64, 2);
+ return renderscript.mElement_LONG_2;
+ }
+
+ public static Element I64_3(RenderScript renderscript)
+ {
+ if(renderscript.mElement_LONG_3 == null)
+ renderscript.mElement_LONG_3 = createVector(renderscript, DataType.SIGNED_64, 3);
+ return renderscript.mElement_LONG_3;
+ }
+
+ public static Element I64_4(RenderScript renderscript)
+ {
+ if(renderscript.mElement_LONG_4 == null)
+ renderscript.mElement_LONG_4 = createVector(renderscript, DataType.SIGNED_64, 4);
+ return renderscript.mElement_LONG_4;
+ }
+
+ public static Element I8(RenderScript renderscript)
+ {
+ if(renderscript.mElement_I8 == null)
+ renderscript.mElement_I8 = createUser(renderscript, DataType.SIGNED_8);
+ return renderscript.mElement_I8;
+ }
+
+ public static Element I8_2(RenderScript renderscript)
+ {
+ if(renderscript.mElement_CHAR_2 == null)
+ renderscript.mElement_CHAR_2 = createVector(renderscript, DataType.SIGNED_8, 2);
+ return renderscript.mElement_CHAR_2;
+ }
+
+ public static Element I8_3(RenderScript renderscript)
+ {
+ if(renderscript.mElement_CHAR_3 == null)
+ renderscript.mElement_CHAR_3 = createVector(renderscript, DataType.SIGNED_8, 3);
+ return renderscript.mElement_CHAR_3;
+ }
+
+ public static Element I8_4(RenderScript renderscript)
+ {
+ if(renderscript.mElement_CHAR_4 == null)
+ renderscript.mElement_CHAR_4 = createVector(renderscript, DataType.SIGNED_8, 4);
+ return renderscript.mElement_CHAR_4;
+ }
+
+ public static Element MATRIX_2X2(RenderScript renderscript)
+ {
+ if(renderscript.mElement_MATRIX_2X2 == null)
+ renderscript.mElement_MATRIX_2X2 = createUser(renderscript, DataType.MATRIX_2X2);
+ return renderscript.mElement_MATRIX_2X2;
+ }
+
+ public static Element MATRIX_3X3(RenderScript renderscript)
+ {
+ if(renderscript.mElement_MATRIX_3X3 == null)
+ renderscript.mElement_MATRIX_3X3 = createUser(renderscript, DataType.MATRIX_3X3);
+ return renderscript.mElement_MATRIX_3X3;
+ }
+
+ public static Element MATRIX_4X4(RenderScript renderscript)
+ {
+ if(renderscript.mElement_MATRIX_4X4 == null)
+ renderscript.mElement_MATRIX_4X4 = createUser(renderscript, DataType.MATRIX_4X4);
+ return renderscript.mElement_MATRIX_4X4;
+ }
+
+ public static Element RGBA_4444(RenderScript renderscript)
+ {
+ if(renderscript.mElement_RGBA_4444 == null)
+ renderscript.mElement_RGBA_4444 = createPixel(renderscript, DataType.UNSIGNED_4_4_4_4, DataKind.PIXEL_RGBA);
+ return renderscript.mElement_RGBA_4444;
+ }
+
+ public static Element RGBA_5551(RenderScript renderscript)
+ {
+ if(renderscript.mElement_RGBA_5551 == null)
+ renderscript.mElement_RGBA_5551 = createPixel(renderscript, DataType.UNSIGNED_5_5_5_1, DataKind.PIXEL_RGBA);
+ return renderscript.mElement_RGBA_5551;
+ }
+
+ public static Element RGBA_8888(RenderScript renderscript)
+ {
+ if(renderscript.mElement_RGBA_8888 == null)
+ renderscript.mElement_RGBA_8888 = createPixel(renderscript, DataType.UNSIGNED_8, DataKind.PIXEL_RGBA);
+ return renderscript.mElement_RGBA_8888;
+ }
+
+ public static Element RGB_565(RenderScript renderscript)
+ {
+ if(renderscript.mElement_RGB_565 == null)
+ renderscript.mElement_RGB_565 = createPixel(renderscript, DataType.UNSIGNED_5_6_5, DataKind.PIXEL_RGB);
+ return renderscript.mElement_RGB_565;
+ }
+
+ public static Element RGB_888(RenderScript renderscript)
+ {
+ if(renderscript.mElement_RGB_888 == null)
+ renderscript.mElement_RGB_888 = createPixel(renderscript, DataType.UNSIGNED_8, DataKind.PIXEL_RGB);
+ return renderscript.mElement_RGB_888;
+ }
+
+ public static Element SAMPLER(RenderScript renderscript)
+ {
+ if(renderscript.mElement_SAMPLER == null)
+ renderscript.mElement_SAMPLER = createUser(renderscript, DataType.RS_SAMPLER);
+ return renderscript.mElement_SAMPLER;
+ }
+
+ public static Element SCRIPT(RenderScript renderscript)
+ {
+ if(renderscript.mElement_SCRIPT == null)
+ renderscript.mElement_SCRIPT = createUser(renderscript, DataType.RS_SCRIPT);
+ return renderscript.mElement_SCRIPT;
+ }
+
+ public static Element TYPE(RenderScript renderscript)
+ {
+ if(renderscript.mElement_TYPE == null)
+ renderscript.mElement_TYPE = createUser(renderscript, DataType.RS_TYPE);
+ return renderscript.mElement_TYPE;
+ }
+
+ public static Element U16(RenderScript renderscript)
+ {
+ if(renderscript.mElement_U16 == null)
+ renderscript.mElement_U16 = createUser(renderscript, DataType.UNSIGNED_16);
+ return renderscript.mElement_U16;
+ }
+
+ public static Element U16_2(RenderScript renderscript)
+ {
+ if(renderscript.mElement_USHORT_2 == null)
+ renderscript.mElement_USHORT_2 = createVector(renderscript, DataType.UNSIGNED_16, 2);
+ return renderscript.mElement_USHORT_2;
+ }
+
+ public static Element U16_3(RenderScript renderscript)
+ {
+ if(renderscript.mElement_USHORT_3 == null)
+ renderscript.mElement_USHORT_3 = createVector(renderscript, DataType.UNSIGNED_16, 3);
+ return renderscript.mElement_USHORT_3;
+ }
+
+ public static Element U16_4(RenderScript renderscript)
+ {
+ if(renderscript.mElement_USHORT_4 == null)
+ renderscript.mElement_USHORT_4 = createVector(renderscript, DataType.UNSIGNED_16, 4);
+ return renderscript.mElement_USHORT_4;
+ }
+
+ public static Element U32(RenderScript renderscript)
+ {
+ if(renderscript.mElement_U32 == null)
+ renderscript.mElement_U32 = createUser(renderscript, DataType.UNSIGNED_32);
+ return renderscript.mElement_U32;
+ }
+
+ public static Element U32_2(RenderScript renderscript)
+ {
+ if(renderscript.mElement_UINT_2 == null)
+ renderscript.mElement_UINT_2 = createVector(renderscript, DataType.UNSIGNED_32, 2);
+ return renderscript.mElement_UINT_2;
+ }
+
+ public static Element U32_3(RenderScript renderscript)
+ {
+ if(renderscript.mElement_UINT_3 == null)
+ renderscript.mElement_UINT_3 = createVector(renderscript, DataType.UNSIGNED_32, 3);
+ return renderscript.mElement_UINT_3;
+ }
+
+ public static Element U32_4(RenderScript renderscript)
+ {
+ if(renderscript.mElement_UINT_4 == null)
+ renderscript.mElement_UINT_4 = createVector(renderscript, DataType.UNSIGNED_32, 4);
+ return renderscript.mElement_UINT_4;
+ }
+
+ public static Element U64(RenderScript renderscript)
+ {
+ if(renderscript.mElement_U64 == null)
+ renderscript.mElement_U64 = createUser(renderscript, DataType.UNSIGNED_64);
+ return renderscript.mElement_U64;
+ }
+
+ public static Element U64_2(RenderScript renderscript)
+ {
+ if(renderscript.mElement_ULONG_2 == null)
+ renderscript.mElement_ULONG_2 = createVector(renderscript, DataType.UNSIGNED_64, 2);
+ return renderscript.mElement_ULONG_2;
+ }
+
+ public static Element U64_3(RenderScript renderscript)
+ {
+ if(renderscript.mElement_ULONG_3 == null)
+ renderscript.mElement_ULONG_3 = createVector(renderscript, DataType.UNSIGNED_64, 3);
+ return renderscript.mElement_ULONG_3;
+ }
+
+ public static Element U64_4(RenderScript renderscript)
+ {
+ if(renderscript.mElement_ULONG_4 == null)
+ renderscript.mElement_ULONG_4 = createVector(renderscript, DataType.UNSIGNED_64, 4);
+ return renderscript.mElement_ULONG_4;
+ }
+
+ public static Element U8(RenderScript renderscript)
+ {
+ if(renderscript.mElement_U8 == null)
+ renderscript.mElement_U8 = createUser(renderscript, DataType.UNSIGNED_8);
+ return renderscript.mElement_U8;
+ }
+
+ public static Element U8_2(RenderScript renderscript)
+ {
+ if(renderscript.mElement_UCHAR_2 == null)
+ renderscript.mElement_UCHAR_2 = createVector(renderscript, DataType.UNSIGNED_8, 2);
+ return renderscript.mElement_UCHAR_2;
+ }
+
+ public static Element U8_3(RenderScript renderscript)
+ {
+ if(renderscript.mElement_UCHAR_3 == null)
+ renderscript.mElement_UCHAR_3 = createVector(renderscript, DataType.UNSIGNED_8, 3);
+ return renderscript.mElement_UCHAR_3;
+ }
+
+ public static Element U8_4(RenderScript renderscript)
+ {
+ if(renderscript.mElement_UCHAR_4 == null)
+ renderscript.mElement_UCHAR_4 = createVector(renderscript, DataType.UNSIGNED_8, 4);
+ return renderscript.mElement_UCHAR_4;
+ }
+
+ public static Element createPixel(RenderScript renderscript, DataType datatype, DataKind datakind)
+ {
+ if(!RenderScript.isNative) goto _L2; else goto _L1
+_L1:
+ Element element = ElementThunker.createPixel((RenderScriptThunker)renderscript, datatype, datakind);
+_L8:
+ return element;
+_L2:
+ int i;
+ if(datakind != DataKind.PIXEL_L && datakind != DataKind.PIXEL_A && datakind != DataKind.PIXEL_LA && datakind != DataKind.PIXEL_RGB && datakind != DataKind.PIXEL_RGBA && datakind != DataKind.PIXEL_DEPTH && datakind != DataKind.PIXEL_YUV)
+ throw new RSIllegalArgumentException("Unsupported DataKind");
+ if(datatype != DataType.UNSIGNED_8 && datatype != DataType.UNSIGNED_16 && datatype != DataType.UNSIGNED_5_6_5 && datatype != DataType.UNSIGNED_4_4_4_4 && datatype != DataType.UNSIGNED_5_5_5_1)
+ throw new RSIllegalArgumentException("Unsupported DataType");
+ if(datatype == DataType.UNSIGNED_5_6_5 && datakind != DataKind.PIXEL_RGB)
+ throw new RSIllegalArgumentException("Bad kind and type combo");
+ if(datatype == DataType.UNSIGNED_5_5_5_1 && datakind != DataKind.PIXEL_RGBA)
+ throw new RSIllegalArgumentException("Bad kind and type combo");
+ if(datatype == DataType.UNSIGNED_4_4_4_4 && datakind != DataKind.PIXEL_RGBA)
+ throw new RSIllegalArgumentException("Bad kind and type combo");
+ if(datatype == DataType.UNSIGNED_16 && datakind != DataKind.PIXEL_DEPTH)
+ throw new RSIllegalArgumentException("Bad kind and type combo");
+ i = 1;
+ class _cls1
+ {
+
+ static final int $SwitchMap$android$support$v8$renderscript$Element$DataKind[];
+ static final int $SwitchMap$android$support$v8$renderscript$Element$DataType[];
+
+ static
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataKind = new int[DataKind.values().length];
+ NoSuchFieldError nosuchfielderror13;
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataKind[DataKind.PIXEL_LA.ordinal()] = 1;
+ }
+ catch(NoSuchFieldError nosuchfielderror) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataKind[DataKind.PIXEL_RGB.ordinal()] = 2;
+ }
+ catch(NoSuchFieldError nosuchfielderror1) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataKind[DataKind.PIXEL_RGBA.ordinal()] = 3;
+ }
+ catch(NoSuchFieldError nosuchfielderror2) { }
+ $SwitchMap$android$support$v8$renderscript$Element$DataType = new int[DataType.values().length];
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataType[DataType.FLOAT_32.ordinal()] = 1;
+ }
+ catch(NoSuchFieldError nosuchfielderror3) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataType[DataType.FLOAT_64.ordinal()] = 2;
+ }
+ catch(NoSuchFieldError nosuchfielderror4) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataType[DataType.SIGNED_8.ordinal()] = 3;
+ }
+ catch(NoSuchFieldError nosuchfielderror5) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataType[DataType.SIGNED_16.ordinal()] = 4;
+ }
+ catch(NoSuchFieldError nosuchfielderror6) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataType[DataType.SIGNED_32.ordinal()] = 5;
+ }
+ catch(NoSuchFieldError nosuchfielderror7) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataType[DataType.SIGNED_64.ordinal()] = 6;
+ }
+ catch(NoSuchFieldError nosuchfielderror8) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataType[DataType.UNSIGNED_8.ordinal()] = 7;
+ }
+ catch(NoSuchFieldError nosuchfielderror9) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataType[DataType.UNSIGNED_16.ordinal()] = 8;
+ }
+ catch(NoSuchFieldError nosuchfielderror10) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataType[DataType.UNSIGNED_32.ordinal()] = 9;
+ }
+ catch(NoSuchFieldError nosuchfielderror11) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataType[DataType.UNSIGNED_64.ordinal()] = 10;
+ }
+ catch(NoSuchFieldError nosuchfielderror12) { }
+ $SwitchMap$android$support$v8$renderscript$Element$DataType[DataType.BOOLEAN.ordinal()] = 11;
+_L2:
+ return;
+ nosuchfielderror13;
+ if(true) goto _L2; else goto _L1
+_L1:
+ }
+ }
+
+ _cls1..SwitchMap.android.support.v8.renderscript.Element.DataKind[datakind.ordinal()];
+ JVM INSTR tableswitch 1 3: default 264
+ // 1 295
+ // 2 300
+ // 3 305;
+ goto _L3 _L4 _L5 _L6
+_L6:
+ break MISSING_BLOCK_LABEL_305;
+_L3:
+ break; /* Loop/switch isn't completed */
+_L4:
+ break; /* Loop/switch isn't completed */
+_L9:
+ element = new Element(renderscript.nElementCreate(datatype.mID, datakind.mID, true, i), renderscript, datatype, datakind, true, i);
+ if(true) goto _L8; else goto _L7
+_L7:
+ i = 2;
+ goto _L9
+_L5:
+ i = 3;
+ goto _L9
+ i = 4;
+ goto _L9
+ }
+
+ static Element createUser(RenderScript renderscript, DataType datatype)
+ {
+ Element element;
+ if(RenderScript.isNative)
+ {
+ element = ElementThunker.create((RenderScriptThunker)renderscript, datatype);
+ } else
+ {
+ DataKind datakind = DataKind.USER;
+ element = new Element(renderscript.nElementCreate(datatype.mID, datakind.mID, false, 1), renderscript, datatype, datakind, false, 1);
+ }
+ return element;
+ }
+
+ public static Element createVector(RenderScript renderscript, DataType datatype, int i)
+ {
+ Element element;
+ if(RenderScript.isNative)
+ {
+ element = ElementThunker.createVector((RenderScriptThunker)renderscript, datatype, i);
+ } else
+ {
+ if(i < 2 || i > 4)
+ throw new RSIllegalArgumentException("Vector size out of range 2-4.");
+ DataKind datakind;
+ switch(_cls1..SwitchMap.android.support.v8.renderscript.Element.DataType[datatype.ordinal()])
+ {
+ default:
+ throw new RSIllegalArgumentException("Cannot create vector of non-primitive type.");
+
+ case 1: // '\001'
+ case 2: // '\002'
+ case 3: // '\003'
+ case 4: // '\004'
+ case 5: // '\005'
+ case 6: // '\006'
+ case 7: // '\007'
+ case 8: // '\b'
+ case 9: // '\t'
+ case 10: // '\n'
+ case 11: // '\013'
+ datakind = DataKind.USER;
+ break;
+ }
+ element = new Element(renderscript.nElementCreate(datatype.mID, datakind.mID, false, i), renderscript, datatype, datakind, false, i);
+ }
+ return element;
+ }
+
+ private void updateVisibleSubElements()
+ {
+ if(mElements != null)
+ {
+ int i = 0;
+ int j = mElementNames.length;
+ for(int k = 0; k < j; k++)
+ if(mElementNames[k].charAt(0) != '#')
+ i++;
+
+ mVisibleElementMap = new int[i];
+ int l = 0;
+ int i1 = 0;
+ while(l < j)
+ {
+ int j1;
+ if(mElementNames[l].charAt(0) != '#')
+ {
+ int ai[] = mVisibleElementMap;
+ j1 = i1 + 1;
+ ai[i1] = l;
+ } else
+ {
+ j1 = i1;
+ }
+ l++;
+ i1 = j1;
+ }
+ }
+ }
+
+ public int getBytesSize()
+ {
+ return mSize;
+ }
+
+ public DataKind getDataKind()
+ {
+ return mKind;
+ }
+
+ public DataType getDataType()
+ {
+ return mType;
+ }
+
+ public Element getSubElement(int i)
+ {
+ if(mVisibleElementMap == null)
+ throw new RSIllegalArgumentException("Element contains no sub-elements");
+ if(i < 0 || i >= mVisibleElementMap.length)
+ throw new RSIllegalArgumentException("Illegal sub-element index");
+ else
+ return mElements[mVisibleElementMap[i]];
+ }
+
+ public int getSubElementArraySize(int i)
+ {
+ if(mVisibleElementMap == null)
+ throw new RSIllegalArgumentException("Element contains no sub-elements");
+ if(i < 0 || i >= mVisibleElementMap.length)
+ throw new RSIllegalArgumentException("Illegal sub-element index");
+ else
+ return mArraySizes[mVisibleElementMap[i]];
+ }
+
+ public int getSubElementCount()
+ {
+ int i;
+ if(mVisibleElementMap == null)
+ i = 0;
+ else
+ i = mVisibleElementMap.length;
+ return i;
+ }
+
+ public String getSubElementName(int i)
+ {
+ if(mVisibleElementMap == null)
+ throw new RSIllegalArgumentException("Element contains no sub-elements");
+ if(i < 0 || i >= mVisibleElementMap.length)
+ throw new RSIllegalArgumentException("Illegal sub-element index");
+ else
+ return mElementNames[mVisibleElementMap[i]];
+ }
+
+ public int getSubElementOffsetBytes(int i)
+ {
+ if(mVisibleElementMap == null)
+ throw new RSIllegalArgumentException("Element contains no sub-elements");
+ if(i < 0 || i >= mVisibleElementMap.length)
+ throw new RSIllegalArgumentException("Illegal sub-element index");
+ else
+ return mOffsetInBytes[mVisibleElementMap[i]];
+ }
+
+ public int getVectorSize()
+ {
+ return mVectorSize;
+ }
+
+ public boolean isCompatible(Element element)
+ {
+ boolean flag;
+ flag = true;
+ break MISSING_BLOCK_LABEL_2;
+ if(!equals(element) && (mSize != element.mSize || mType == DataType.NONE || mType != element.mType || mVectorSize != element.mVectorSize))
+ flag = false;
+ return flag;
+ }
+
+ public boolean isComplex()
+ {
+ boolean flag = false;
+ if(mElements != null) goto _L2; else goto _L1
+_L1:
+ return flag;
+_L2:
+ int i = 0;
+ do
+ {
+ if(i < mElements.length)
+ {
+label0:
+ {
+ if(mElements[i].mElements == null)
+ break label0;
+ flag = true;
+ }
+ }
+ if(true)
+ continue;
+ i++;
+ } while(true);
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ int mArraySizes[];
+ String mElementNames[];
+ Element mElements[];
+ DataKind mKind;
+ boolean mNormalized;
+ int mOffsetInBytes[];
+ int mSize;
+ DataType mType;
+ int mVectorSize;
+ int mVisibleElementMap[];
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ElementThunker.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ElementThunker.java
new file mode 100644
index 0000000..301054b
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ElementThunker.java
@@ -0,0 +1,614 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+import android.renderscript.*;
+
+// Referenced classes of package android.support.v8.renderscript:
+// Element, RenderScriptThunker, ExceptionThunker, RenderScript
+
+class ElementThunker extends android.support.v8.renderscript.Element
+{
+ static class BuilderThunker
+ {
+
+ public void add(android.support.v8.renderscript.Element element, String s, int i)
+ {
+ ElementThunker elementthunker = (ElementThunker)element;
+ try
+ {
+ mN.add(elementthunker.mN, s, i);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public android.support.v8.renderscript.Element create(RenderScript renderscript)
+ {
+ ElementThunker elementthunker;
+ try
+ {
+ elementthunker = new ElementThunker(renderscript, mN.create());
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return elementthunker;
+ }
+
+ android.renderscript.Element.Builder mN;
+
+ public BuilderThunker(RenderScript renderscript)
+ {
+ RenderScriptThunker renderscriptthunker = (RenderScriptThunker)renderscript;
+ try
+ {
+ mN = new android.renderscript.Element.Builder(renderscriptthunker.mN);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+ }
+
+
+ ElementThunker(RenderScript renderscript, Element element)
+ {
+ super(0, renderscript);
+ mN = element;
+ }
+
+ static android.renderscript.Element.DataKind convertKind(Element.DataKind datakind)
+ {
+ class _cls1
+ {
+
+ static final int $SwitchMap$android$support$v8$renderscript$Element$DataKind[];
+ static final int $SwitchMap$android$support$v8$renderscript$Element$DataType[];
+
+ static
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataType = new int[Element.DataType.values().length];
+ NoSuchFieldError nosuchfielderror25;
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataType[Element.DataType.NONE.ordinal()] = 1;
+ }
+ catch(NoSuchFieldError nosuchfielderror) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataType[Element.DataType.FLOAT_32.ordinal()] = 2;
+ }
+ catch(NoSuchFieldError nosuchfielderror1) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataType[Element.DataType.FLOAT_64.ordinal()] = 3;
+ }
+ catch(NoSuchFieldError nosuchfielderror2) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataType[Element.DataType.SIGNED_8.ordinal()] = 4;
+ }
+ catch(NoSuchFieldError nosuchfielderror3) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataType[Element.DataType.SIGNED_16.ordinal()] = 5;
+ }
+ catch(NoSuchFieldError nosuchfielderror4) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataType[Element.DataType.SIGNED_32.ordinal()] = 6;
+ }
+ catch(NoSuchFieldError nosuchfielderror5) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataType[Element.DataType.SIGNED_64.ordinal()] = 7;
+ }
+ catch(NoSuchFieldError nosuchfielderror6) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataType[Element.DataType.UNSIGNED_8.ordinal()] = 8;
+ }
+ catch(NoSuchFieldError nosuchfielderror7) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataType[Element.DataType.UNSIGNED_16.ordinal()] = 9;
+ }
+ catch(NoSuchFieldError nosuchfielderror8) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataType[Element.DataType.UNSIGNED_32.ordinal()] = 10;
+ }
+ catch(NoSuchFieldError nosuchfielderror9) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataType[Element.DataType.UNSIGNED_64.ordinal()] = 11;
+ }
+ catch(NoSuchFieldError nosuchfielderror10) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataType[Element.DataType.BOOLEAN.ordinal()] = 12;
+ }
+ catch(NoSuchFieldError nosuchfielderror11) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataType[Element.DataType.MATRIX_4X4.ordinal()] = 13;
+ }
+ catch(NoSuchFieldError nosuchfielderror12) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataType[Element.DataType.MATRIX_3X3.ordinal()] = 14;
+ }
+ catch(NoSuchFieldError nosuchfielderror13) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataType[Element.DataType.MATRIX_2X2.ordinal()] = 15;
+ }
+ catch(NoSuchFieldError nosuchfielderror14) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataType[Element.DataType.RS_ELEMENT.ordinal()] = 16;
+ }
+ catch(NoSuchFieldError nosuchfielderror15) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataType[Element.DataType.RS_TYPE.ordinal()] = 17;
+ }
+ catch(NoSuchFieldError nosuchfielderror16) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataType[Element.DataType.RS_ALLOCATION.ordinal()] = 18;
+ }
+ catch(NoSuchFieldError nosuchfielderror17) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataType[Element.DataType.RS_SAMPLER.ordinal()] = 19;
+ }
+ catch(NoSuchFieldError nosuchfielderror18) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataType[Element.DataType.RS_SCRIPT.ordinal()] = 20;
+ }
+ catch(NoSuchFieldError nosuchfielderror19) { }
+ $SwitchMap$android$support$v8$renderscript$Element$DataKind = new int[Element.DataKind.values().length];
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataKind[Element.DataKind.USER.ordinal()] = 1;
+ }
+ catch(NoSuchFieldError nosuchfielderror20) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataKind[Element.DataKind.PIXEL_L.ordinal()] = 2;
+ }
+ catch(NoSuchFieldError nosuchfielderror21) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataKind[Element.DataKind.PIXEL_A.ordinal()] = 3;
+ }
+ catch(NoSuchFieldError nosuchfielderror22) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataKind[Element.DataKind.PIXEL_LA.ordinal()] = 4;
+ }
+ catch(NoSuchFieldError nosuchfielderror23) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Element$DataKind[Element.DataKind.PIXEL_RGB.ordinal()] = 5;
+ }
+ catch(NoSuchFieldError nosuchfielderror24) { }
+ $SwitchMap$android$support$v8$renderscript$Element$DataKind[Element.DataKind.PIXEL_RGBA.ordinal()] = 6;
+_L2:
+ return;
+ nosuchfielderror25;
+ if(true) goto _L2; else goto _L1
+_L1:
+ }
+ }
+
+ _cls1..SwitchMap.android.support.v8.renderscript.Element.DataKind[datakind.ordinal()];
+ JVM INSTR tableswitch 1 6: default 48
+ // 1 52
+ // 2 59
+ // 3 66
+ // 4 73
+ // 5 80
+ // 6 87;
+ goto _L1 _L2 _L3 _L4 _L5 _L6 _L7
+_L1:
+ android.renderscript.Element.DataKind datakind1 = null;
+_L9:
+ return datakind1;
+_L2:
+ datakind1 = android.renderscript.Element.DataKind.USER;
+ continue; /* Loop/switch isn't completed */
+_L3:
+ datakind1 = android.renderscript.Element.DataKind.PIXEL_L;
+ continue; /* Loop/switch isn't completed */
+_L4:
+ datakind1 = android.renderscript.Element.DataKind.PIXEL_A;
+ continue; /* Loop/switch isn't completed */
+_L5:
+ datakind1 = android.renderscript.Element.DataKind.PIXEL_LA;
+ continue; /* Loop/switch isn't completed */
+_L6:
+ datakind1 = android.renderscript.Element.DataKind.PIXEL_RGB;
+ continue; /* Loop/switch isn't completed */
+_L7:
+ datakind1 = android.renderscript.Element.DataKind.PIXEL_RGBA;
+ if(true) goto _L9; else goto _L8
+_L8:
+ }
+
+ static android.renderscript.Element.DataType convertType(Element.DataType datatype)
+ {
+ _cls1..SwitchMap.android.support.v8.renderscript.Element.DataType[datatype.ordinal()];
+ JVM INSTR tableswitch 1 20: default 104
+ // 1 108
+ // 2 115
+ // 3 122
+ // 4 129
+ // 5 136
+ // 6 143
+ // 7 150
+ // 8 157
+ // 9 164
+ // 10 171
+ // 11 178
+ // 12 185
+ // 13 192
+ // 14 199
+ // 15 206
+ // 16 213
+ // 17 220
+ // 18 227
+ // 19 234
+ // 20 241;
+ goto _L1 _L2 _L3 _L4 _L5 _L6 _L7 _L8 _L9 _L10 _L11 _L12 _L13 _L14 _L15 _L16 _L17 _L18 _L19 _L20 _L21
+_L1:
+ android.renderscript.Element.DataType datatype1 = null;
+_L23:
+ return datatype1;
+_L2:
+ datatype1 = android.renderscript.Element.DataType.NONE;
+ continue; /* Loop/switch isn't completed */
+_L3:
+ datatype1 = android.renderscript.Element.DataType.FLOAT_32;
+ continue; /* Loop/switch isn't completed */
+_L4:
+ datatype1 = android.renderscript.Element.DataType.FLOAT_64;
+ continue; /* Loop/switch isn't completed */
+_L5:
+ datatype1 = android.renderscript.Element.DataType.SIGNED_8;
+ continue; /* Loop/switch isn't completed */
+_L6:
+ datatype1 = android.renderscript.Element.DataType.SIGNED_16;
+ continue; /* Loop/switch isn't completed */
+_L7:
+ datatype1 = android.renderscript.Element.DataType.SIGNED_32;
+ continue; /* Loop/switch isn't completed */
+_L8:
+ datatype1 = android.renderscript.Element.DataType.SIGNED_64;
+ continue; /* Loop/switch isn't completed */
+_L9:
+ datatype1 = android.renderscript.Element.DataType.UNSIGNED_8;
+ continue; /* Loop/switch isn't completed */
+_L10:
+ datatype1 = android.renderscript.Element.DataType.UNSIGNED_16;
+ continue; /* Loop/switch isn't completed */
+_L11:
+ datatype1 = android.renderscript.Element.DataType.UNSIGNED_32;
+ continue; /* Loop/switch isn't completed */
+_L12:
+ datatype1 = android.renderscript.Element.DataType.UNSIGNED_64;
+ continue; /* Loop/switch isn't completed */
+_L13:
+ datatype1 = android.renderscript.Element.DataType.BOOLEAN;
+ continue; /* Loop/switch isn't completed */
+_L14:
+ datatype1 = android.renderscript.Element.DataType.MATRIX_4X4;
+ continue; /* Loop/switch isn't completed */
+_L15:
+ datatype1 = android.renderscript.Element.DataType.MATRIX_3X3;
+ continue; /* Loop/switch isn't completed */
+_L16:
+ datatype1 = android.renderscript.Element.DataType.MATRIX_2X2;
+ continue; /* Loop/switch isn't completed */
+_L17:
+ datatype1 = android.renderscript.Element.DataType.RS_ELEMENT;
+ continue; /* Loop/switch isn't completed */
+_L18:
+ datatype1 = android.renderscript.Element.DataType.RS_TYPE;
+ continue; /* Loop/switch isn't completed */
+_L19:
+ datatype1 = android.renderscript.Element.DataType.RS_ALLOCATION;
+ continue; /* Loop/switch isn't completed */
+_L20:
+ datatype1 = android.renderscript.Element.DataType.RS_SAMPLER;
+ continue; /* Loop/switch isn't completed */
+_L21:
+ datatype1 = android.renderscript.Element.DataType.RS_SCRIPT;
+ if(true) goto _L23; else goto _L22
+_L22:
+ }
+
+ static android.support.v8.renderscript.Element create(RenderScript renderscript, Element.DataType datatype)
+ {
+ RenderScriptThunker renderscriptthunker;
+ Element element;
+ renderscriptthunker = (RenderScriptThunker)renderscript;
+ element = null;
+ _cls1..SwitchMap.android.support.v8.renderscript.Element.DataType[datatype.ordinal()];
+ JVM INSTR tableswitch 2 20: default 104
+ // 2 114
+ // 3 125
+ // 4 136
+ // 5 147
+ // 6 158
+ // 7 169
+ // 8 180
+ // 9 191
+ // 10 202
+ // 11 213
+ // 12 224
+ // 13 235
+ // 14 246
+ // 15 257
+ // 16 268
+ // 17 279
+ // 18 290
+ // 19 301
+ // 20 312;
+ goto _L1 _L2 _L3 _L4 _L5 _L6 _L7 _L8 _L9 _L10 _L11 _L12 _L13 _L14 _L15 _L16 _L17 _L18 _L19 _L20
+_L1:
+ return new ElementThunker(renderscript, element);
+_L2:
+ element = Element.F32(renderscriptthunker.mN);
+ goto _L1
+_L3:
+ element = Element.F64(renderscriptthunker.mN);
+ goto _L1
+_L4:
+ element = Element.I8(renderscriptthunker.mN);
+ goto _L1
+_L5:
+ element = Element.I16(renderscriptthunker.mN);
+ goto _L1
+_L6:
+ element = Element.I32(renderscriptthunker.mN);
+ goto _L1
+_L7:
+ element = Element.I64(renderscriptthunker.mN);
+ goto _L1
+_L8:
+ element = Element.U8(renderscriptthunker.mN);
+ goto _L1
+_L9:
+ element = Element.U16(renderscriptthunker.mN);
+ goto _L1
+_L10:
+ element = Element.U32(renderscriptthunker.mN);
+ goto _L1
+_L11:
+ element = Element.U64(renderscriptthunker.mN);
+ goto _L1
+_L12:
+ element = Element.BOOLEAN(renderscriptthunker.mN);
+ goto _L1
+_L13:
+ element = Element.MATRIX_4X4(renderscriptthunker.mN);
+ goto _L1
+_L14:
+ element = Element.MATRIX_3X3(renderscriptthunker.mN);
+ goto _L1
+_L15:
+ element = Element.MATRIX_2X2(renderscriptthunker.mN);
+ goto _L1
+_L16:
+ element = Element.ELEMENT(renderscriptthunker.mN);
+ goto _L1
+_L17:
+ element = Element.TYPE(renderscriptthunker.mN);
+ goto _L1
+_L18:
+ element = Element.ALLOCATION(renderscriptthunker.mN);
+ goto _L1
+_L19:
+ element = Element.SAMPLER(renderscriptthunker.mN);
+ goto _L1
+_L20:
+ Element element1 = Element.SCRIPT(renderscriptthunker.mN);
+ element = element1;
+ goto _L1
+ RSRuntimeException rsruntimeexception;
+ rsruntimeexception;
+ element;
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+
+ public static android.support.v8.renderscript.Element createPixel(RenderScript renderscript, Element.DataType datatype, Element.DataKind datakind)
+ {
+ RenderScriptThunker renderscriptthunker = (RenderScriptThunker)renderscript;
+ ElementThunker elementthunker;
+ try
+ {
+ elementthunker = new ElementThunker(renderscript, Element.createPixel(renderscriptthunker.mN, convertType(datatype), convertKind(datakind)));
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return elementthunker;
+ }
+
+ public static android.support.v8.renderscript.Element createVector(RenderScript renderscript, Element.DataType datatype, int i)
+ {
+ RenderScriptThunker renderscriptthunker = (RenderScriptThunker)renderscript;
+ ElementThunker elementthunker;
+ try
+ {
+ elementthunker = new ElementThunker(renderscript, Element.createVector(renderscriptthunker.mN, convertType(datatype), i));
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return elementthunker;
+ }
+
+ public int getBytesSize()
+ {
+ int i;
+ try
+ {
+ i = mN.getBytesSize();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return i;
+ }
+
+ public Element.DataKind getDataKind()
+ {
+ return mKind;
+ }
+
+ public Element.DataType getDataType()
+ {
+ return mType;
+ }
+
+ volatile BaseObj getNObj()
+ {
+ return getNObj();
+ }
+
+ Element getNObj()
+ {
+ return mN;
+ }
+
+ public android.support.v8.renderscript.Element getSubElement(int i)
+ {
+ ElementThunker elementthunker;
+ try
+ {
+ elementthunker = new ElementThunker(mRS, mN.getSubElement(i));
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return elementthunker;
+ }
+
+ public int getSubElementArraySize(int i)
+ {
+ int j;
+ try
+ {
+ j = mN.getSubElementArraySize(i);
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return j;
+ }
+
+ public int getSubElementCount()
+ {
+ int i;
+ try
+ {
+ i = mN.getSubElementCount();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return i;
+ }
+
+ public String getSubElementName(int i)
+ {
+ String s;
+ try
+ {
+ s = mN.getSubElementName(i);
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return s;
+ }
+
+ public int getSubElementOffsetBytes(int i)
+ {
+ int j;
+ try
+ {
+ j = mN.getSubElementOffsetBytes(i);
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return j;
+ }
+
+ public int getVectorSize()
+ {
+ int i;
+ try
+ {
+ i = mN.getVectorSize();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return i;
+ }
+
+ public boolean isCompatible(android.support.v8.renderscript.Element element)
+ {
+ ElementThunker elementthunker = (ElementThunker)element;
+ boolean flag;
+ try
+ {
+ flag = elementthunker.mN.isCompatible(mN);
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return flag;
+ }
+
+ public boolean isComplex()
+ {
+ boolean flag;
+ try
+ {
+ flag = mN.isComplex();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return flag;
+ }
+
+ Element mN;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ExceptionThunker.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ExceptionThunker.java
new file mode 100644
index 0000000..3ad0e03
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ExceptionThunker.java
@@ -0,0 +1,38 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+import android.renderscript.*;
+
+// Referenced classes of package android.support.v8.renderscript:
+// RSIllegalArgumentException, RSInvalidStateException, RSDriverException, RSRuntimeException
+
+class ExceptionThunker
+{
+
+ ExceptionThunker()
+ {
+ }
+
+ static RuntimeException convertException(RuntimeException runtimeexception)
+ {
+ if(!(runtimeexception instanceof RSIllegalArgumentException)) goto _L2; else goto _L1
+_L1:
+ runtimeexception = new android.support.v8.renderscript.RSIllegalArgumentException(runtimeexception.getMessage());
+_L4:
+ return runtimeexception;
+_L2:
+ if(runtimeexception instanceof RSInvalidStateException)
+ runtimeexception = new android.support.v8.renderscript.RSInvalidStateException(runtimeexception.getMessage());
+ else
+ if(runtimeexception instanceof RSDriverException)
+ runtimeexception = new android.support.v8.renderscript.RSDriverException(runtimeexception.getMessage());
+ else
+ if(runtimeexception instanceof RSRuntimeException)
+ runtimeexception = new android.support.v8.renderscript.RSRuntimeException(runtimeexception.getMessage());
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/FieldPacker.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/FieldPacker.java
new file mode 100644
index 0000000..c36d0e9
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/FieldPacker.java
@@ -0,0 +1,826 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+import android.renderscript.Byte2;
+import android.renderscript.Byte3;
+import android.renderscript.Byte4;
+import android.renderscript.Double2;
+import android.renderscript.Double3;
+import android.renderscript.Double4;
+import android.renderscript.Float2;
+import android.renderscript.Float3;
+import android.renderscript.Float4;
+import android.renderscript.Int2;
+import android.renderscript.Int3;
+import android.renderscript.Int4;
+import android.renderscript.Long2;
+import android.renderscript.Long3;
+import android.renderscript.Long4;
+import android.renderscript.Matrix2f;
+import android.renderscript.Matrix3f;
+import android.renderscript.Matrix4f;
+import android.renderscript.Short2;
+import android.renderscript.Short3;
+import android.renderscript.Short4;
+import android.util.Log;
+
+// Referenced classes of package android.support.v8.renderscript:
+// RenderScript, Float2, Float3, Float4,
+// Double2, Double3, Double4, Short2,
+// Short3, Short4, Int2, Int3,
+// Int4, Long2, Long3, Long4,
+// Byte2, Byte3, Byte4, Matrix2f,
+// Matrix3f, Matrix4f, BaseObj, RSIllegalArgumentException
+
+public class FieldPacker
+{
+
+ public FieldPacker(int i)
+ {
+ mPos = 0;
+ mLen = i;
+ mData = new byte[i];
+ if(RenderScript.shouldThunk())
+ mN = new android.renderscript.FieldPacker(i);
+ }
+
+ public void addBoolean(boolean flag)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addBoolean(flag);
+ } else
+ {
+ int i;
+ if(flag)
+ i = 1;
+ else
+ i = 0;
+ addI8((byte)i);
+ }
+ }
+
+ public void addF32(float f)
+ {
+ if(RenderScript.shouldThunk())
+ mN.addF32(f);
+ else
+ addI32(Float.floatToRawIntBits(f));
+ }
+
+ public void addF32(android.support.v8.renderscript.Float2 float2)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addF32(new Float2(float2.x, float2.y));
+ } else
+ {
+ addF32(float2.x);
+ addF32(float2.y);
+ }
+ }
+
+ public void addF32(android.support.v8.renderscript.Float3 float3)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addF32(new Float3(float3.x, float3.y, float3.z));
+ } else
+ {
+ addF32(float3.x);
+ addF32(float3.y);
+ addF32(float3.z);
+ }
+ }
+
+ public void addF32(android.support.v8.renderscript.Float4 float4)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addF32(new Float4(float4.x, float4.y, float4.z, float4.w));
+ } else
+ {
+ addF32(float4.x);
+ addF32(float4.y);
+ addF32(float4.z);
+ addF32(float4.w);
+ }
+ }
+
+ public void addF64(double d)
+ {
+ if(RenderScript.shouldThunk())
+ mN.addF64(d);
+ else
+ addI64(Double.doubleToRawLongBits(d));
+ }
+
+ public void addF64(android.support.v8.renderscript.Double2 double2)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addF64(new Double2(double2.x, double2.y));
+ } else
+ {
+ addF64(double2.x);
+ addF64(double2.y);
+ }
+ }
+
+ public void addF64(android.support.v8.renderscript.Double3 double3)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addF64(new Double3(double3.x, double3.y, double3.z));
+ } else
+ {
+ addF64(double3.x);
+ addF64(double3.y);
+ addF64(double3.z);
+ }
+ }
+
+ public void addF64(android.support.v8.renderscript.Double4 double4)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addF64(new Double4(double4.x, double4.y, double4.z, double4.w));
+ } else
+ {
+ addF64(double4.x);
+ addF64(double4.y);
+ addF64(double4.z);
+ addF64(double4.w);
+ }
+ }
+
+ public void addI16(android.support.v8.renderscript.Short2 short2)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addI16(new Short2(short2.x, short2.y));
+ } else
+ {
+ addI16(short2.x);
+ addI16(short2.y);
+ }
+ }
+
+ public void addI16(android.support.v8.renderscript.Short3 short3)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addI16(new Short3(short3.x, short3.y, short3.z));
+ } else
+ {
+ addI16(short3.x);
+ addI16(short3.y);
+ addI16(short3.z);
+ }
+ }
+
+ public void addI16(android.support.v8.renderscript.Short4 short4)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addI16(new Short4(short4.x, short4.y, short4.z, short4.w));
+ } else
+ {
+ addI16(short4.x);
+ addI16(short4.y);
+ addI16(short4.z);
+ addI16(short4.w);
+ }
+ }
+
+ public void addI16(short word0)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addI16(word0);
+ } else
+ {
+ align(2);
+ byte abyte0[] = mData;
+ int i = mPos;
+ mPos = i + 1;
+ abyte0[i] = (byte)(word0 & 0xff);
+ byte abyte1[] = mData;
+ int j = mPos;
+ mPos = j + 1;
+ abyte1[j] = (byte)(word0 >> 8);
+ }
+ }
+
+ public void addI32(int i)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addI32(i);
+ } else
+ {
+ align(4);
+ byte abyte0[] = mData;
+ int j = mPos;
+ mPos = j + 1;
+ abyte0[j] = (byte)(i & 0xff);
+ byte abyte1[] = mData;
+ int k = mPos;
+ mPos = k + 1;
+ abyte1[k] = (byte)(0xff & i >> 8);
+ byte abyte2[] = mData;
+ int l = mPos;
+ mPos = l + 1;
+ abyte2[l] = (byte)(0xff & i >> 16);
+ byte abyte3[] = mData;
+ int i1 = mPos;
+ mPos = i1 + 1;
+ abyte3[i1] = (byte)(0xff & i >> 24);
+ }
+ }
+
+ public void addI32(android.support.v8.renderscript.Int2 int2)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addI32(new Int2(int2.x, int2.y));
+ } else
+ {
+ addI32(int2.x);
+ addI32(int2.y);
+ }
+ }
+
+ public void addI32(android.support.v8.renderscript.Int3 int3)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addI32(new Int3(int3.x, int3.y, int3.z));
+ } else
+ {
+ addI32(int3.x);
+ addI32(int3.y);
+ addI32(int3.z);
+ }
+ }
+
+ public void addI32(android.support.v8.renderscript.Int4 int4)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addI32(new Int4(int4.x, int4.y, int4.z, int4.w));
+ } else
+ {
+ addI32(int4.x);
+ addI32(int4.y);
+ addI32(int4.z);
+ addI32(int4.w);
+ }
+ }
+
+ public void addI64(long l)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addI64(l);
+ } else
+ {
+ align(8);
+ byte abyte0[] = mData;
+ int i = mPos;
+ mPos = i + 1;
+ abyte0[i] = (byte)(int)(l & 255L);
+ byte abyte1[] = mData;
+ int j = mPos;
+ mPos = j + 1;
+ abyte1[j] = (byte)(int)(255L & l >> 8);
+ byte abyte2[] = mData;
+ int k = mPos;
+ mPos = k + 1;
+ abyte2[k] = (byte)(int)(255L & l >> 16);
+ byte abyte3[] = mData;
+ int i1 = mPos;
+ mPos = i1 + 1;
+ abyte3[i1] = (byte)(int)(255L & l >> 24);
+ byte abyte4[] = mData;
+ int j1 = mPos;
+ mPos = j1 + 1;
+ abyte4[j1] = (byte)(int)(255L & l >> 32);
+ byte abyte5[] = mData;
+ int k1 = mPos;
+ mPos = k1 + 1;
+ abyte5[k1] = (byte)(int)(255L & l >> 40);
+ byte abyte6[] = mData;
+ int l1 = mPos;
+ mPos = l1 + 1;
+ abyte6[l1] = (byte)(int)(255L & l >> 48);
+ byte abyte7[] = mData;
+ int i2 = mPos;
+ mPos = i2 + 1;
+ abyte7[i2] = (byte)(int)(255L & l >> 56);
+ }
+ }
+
+ public void addI64(android.support.v8.renderscript.Long2 long2)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addI64(new Long2(long2.x, long2.y));
+ } else
+ {
+ addI64(long2.x);
+ addI64(long2.y);
+ }
+ }
+
+ public void addI64(android.support.v8.renderscript.Long3 long3)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addI64(new Long3(long3.x, long3.y, long3.z));
+ } else
+ {
+ addI64(long3.x);
+ addI64(long3.y);
+ addI64(long3.z);
+ }
+ }
+
+ public void addI64(android.support.v8.renderscript.Long4 long4)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addI64(new Long4(long4.x, long4.y, long4.z, long4.w));
+ } else
+ {
+ addI64(long4.x);
+ addI64(long4.y);
+ addI64(long4.z);
+ addI64(long4.w);
+ }
+ }
+
+ public void addI8(byte byte0)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addI8(byte0);
+ } else
+ {
+ byte abyte0[] = mData;
+ int i = mPos;
+ mPos = i + 1;
+ abyte0[i] = byte0;
+ }
+ }
+
+ public void addI8(android.support.v8.renderscript.Byte2 byte2)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addI8(new Byte2(byte2.x, byte2.y));
+ } else
+ {
+ addI8(byte2.x);
+ addI8(byte2.y);
+ }
+ }
+
+ public void addI8(android.support.v8.renderscript.Byte3 byte3)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addI8(new Byte3(byte3.x, byte3.y, byte3.z));
+ } else
+ {
+ addI8(byte3.x);
+ addI8(byte3.y);
+ addI8(byte3.z);
+ }
+ }
+
+ public void addI8(android.support.v8.renderscript.Byte4 byte4)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addI8(new Byte4(byte4.x, byte4.y, byte4.z, byte4.w));
+ } else
+ {
+ addI8(byte4.x);
+ addI8(byte4.y);
+ addI8(byte4.z);
+ addI8(byte4.w);
+ }
+ }
+
+ public void addMatrix(android.support.v8.renderscript.Matrix2f matrix2f)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addMatrix(new Matrix2f(matrix2f.getArray()));
+ } else
+ {
+ int i = 0;
+ while(i < matrix2f.mMat.length)
+ {
+ addF32(matrix2f.mMat[i]);
+ i++;
+ }
+ }
+ }
+
+ public void addMatrix(android.support.v8.renderscript.Matrix3f matrix3f)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addMatrix(new Matrix3f(matrix3f.getArray()));
+ } else
+ {
+ int i = 0;
+ while(i < matrix3f.mMat.length)
+ {
+ addF32(matrix3f.mMat[i]);
+ i++;
+ }
+ }
+ }
+
+ public void addMatrix(android.support.v8.renderscript.Matrix4f matrix4f)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addMatrix(new Matrix4f(matrix4f.getArray()));
+ } else
+ {
+ int i = 0;
+ while(i < matrix4f.mMat.length)
+ {
+ addF32(matrix4f.mMat[i]);
+ i++;
+ }
+ }
+ }
+
+ public void addObj(BaseObj baseobj)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ if(baseobj != null)
+ mN.addObj(baseobj.getNObj());
+ else
+ mN.addObj(null);
+ } else
+ if(baseobj != null)
+ addI32(baseobj.getID(null));
+ else
+ addI32(0);
+ }
+
+ public void addU16(int i)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addU16(i);
+ } else
+ {
+ if(i < 0 || i > 65535)
+ {
+ Log.e("rs", (new StringBuilder()).append("FieldPacker.addU16( ").append(i).append(" )").toString());
+ throw new IllegalArgumentException("Saving value out of range for type");
+ }
+ align(2);
+ byte abyte0[] = mData;
+ int j = mPos;
+ mPos = j + 1;
+ abyte0[j] = (byte)(i & 0xff);
+ byte abyte1[] = mData;
+ int k = mPos;
+ mPos = k + 1;
+ abyte1[k] = (byte)(i >> 8);
+ }
+ }
+
+ public void addU16(android.support.v8.renderscript.Int2 int2)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addU16(new Int2(int2.x, int2.y));
+ } else
+ {
+ addU16(int2.x);
+ addU16(int2.y);
+ }
+ }
+
+ public void addU16(android.support.v8.renderscript.Int3 int3)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addU16(new Int3(int3.x, int3.y, int3.z));
+ } else
+ {
+ addU16(int3.x);
+ addU16(int3.y);
+ addU16(int3.z);
+ }
+ }
+
+ public void addU16(android.support.v8.renderscript.Int4 int4)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addU16(new Int4(int4.x, int4.y, int4.z, int4.w));
+ } else
+ {
+ addU16(int4.x);
+ addU16(int4.y);
+ addU16(int4.z);
+ addU16(int4.w);
+ }
+ }
+
+ public void addU32(long l)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addU32(l);
+ } else
+ {
+ if(l < 0L || l > 0xffffffffL)
+ {
+ Log.e("rs", (new StringBuilder()).append("FieldPacker.addU32( ").append(l).append(" )").toString());
+ throw new IllegalArgumentException("Saving value out of range for type");
+ }
+ align(4);
+ byte abyte0[] = mData;
+ int i = mPos;
+ mPos = i + 1;
+ abyte0[i] = (byte)(int)(l & 255L);
+ byte abyte1[] = mData;
+ int j = mPos;
+ mPos = j + 1;
+ abyte1[j] = (byte)(int)(255L & l >> 8);
+ byte abyte2[] = mData;
+ int k = mPos;
+ mPos = k + 1;
+ abyte2[k] = (byte)(int)(255L & l >> 16);
+ byte abyte3[] = mData;
+ int i1 = mPos;
+ mPos = i1 + 1;
+ abyte3[i1] = (byte)(int)(255L & l >> 24);
+ }
+ }
+
+ public void addU32(android.support.v8.renderscript.Long2 long2)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addU32(new Long2(long2.x, long2.y));
+ } else
+ {
+ addU32(long2.x);
+ addU32(long2.y);
+ }
+ }
+
+ public void addU32(android.support.v8.renderscript.Long3 long3)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addU32(new Long3(long3.x, long3.y, long3.z));
+ } else
+ {
+ addU32(long3.x);
+ addU32(long3.y);
+ addU32(long3.z);
+ }
+ }
+
+ public void addU32(android.support.v8.renderscript.Long4 long4)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addU32(new Long4(long4.x, long4.y, long4.z, long4.w));
+ } else
+ {
+ addU32(long4.x);
+ addU32(long4.y);
+ addU32(long4.z);
+ addU32(long4.w);
+ }
+ }
+
+ public void addU64(long l)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addU64(l);
+ } else
+ {
+ if(l < 0L)
+ {
+ Log.e("rs", (new StringBuilder()).append("FieldPacker.addU64( ").append(l).append(" )").toString());
+ throw new IllegalArgumentException("Saving value out of range for type");
+ }
+ align(8);
+ byte abyte0[] = mData;
+ int i = mPos;
+ mPos = i + 1;
+ abyte0[i] = (byte)(int)(l & 255L);
+ byte abyte1[] = mData;
+ int j = mPos;
+ mPos = j + 1;
+ abyte1[j] = (byte)(int)(255L & l >> 8);
+ byte abyte2[] = mData;
+ int k = mPos;
+ mPos = k + 1;
+ abyte2[k] = (byte)(int)(255L & l >> 16);
+ byte abyte3[] = mData;
+ int i1 = mPos;
+ mPos = i1 + 1;
+ abyte3[i1] = (byte)(int)(255L & l >> 24);
+ byte abyte4[] = mData;
+ int j1 = mPos;
+ mPos = j1 + 1;
+ abyte4[j1] = (byte)(int)(255L & l >> 32);
+ byte abyte5[] = mData;
+ int k1 = mPos;
+ mPos = k1 + 1;
+ abyte5[k1] = (byte)(int)(255L & l >> 40);
+ byte abyte6[] = mData;
+ int l1 = mPos;
+ mPos = l1 + 1;
+ abyte6[l1] = (byte)(int)(255L & l >> 48);
+ byte abyte7[] = mData;
+ int i2 = mPos;
+ mPos = i2 + 1;
+ abyte7[i2] = (byte)(int)(255L & l >> 56);
+ }
+ }
+
+ public void addU64(android.support.v8.renderscript.Long2 long2)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addU64(new Long2(long2.x, long2.y));
+ } else
+ {
+ addU64(long2.x);
+ addU64(long2.y);
+ }
+ }
+
+ public void addU64(android.support.v8.renderscript.Long3 long3)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addU64(new Long3(long3.x, long3.y, long3.z));
+ } else
+ {
+ addU64(long3.x);
+ addU64(long3.y);
+ addU64(long3.z);
+ }
+ }
+
+ public void addU64(android.support.v8.renderscript.Long4 long4)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addU64(new Long4(long4.x, long4.y, long4.z, long4.w));
+ } else
+ {
+ addU64(long4.x);
+ addU64(long4.y);
+ addU64(long4.z);
+ addU64(long4.w);
+ }
+ }
+
+ public void addU8(android.support.v8.renderscript.Short2 short2)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addU8(new Short2(short2.x, short2.y));
+ } else
+ {
+ addU8(short2.x);
+ addU8(short2.y);
+ }
+ }
+
+ public void addU8(android.support.v8.renderscript.Short3 short3)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addU8(new Short3(short3.x, short3.y, short3.z));
+ } else
+ {
+ addU8(short3.x);
+ addU8(short3.y);
+ addU8(short3.z);
+ }
+ }
+
+ public void addU8(android.support.v8.renderscript.Short4 short4)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addU8(new Short4(short4.x, short4.y, short4.z, short4.w));
+ } else
+ {
+ addU8(short4.x);
+ addU8(short4.y);
+ addU8(short4.z);
+ addU8(short4.w);
+ }
+ }
+
+ public void addU8(short word0)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.addU8(word0);
+ } else
+ {
+ if(word0 < 0 || word0 > 255)
+ throw new IllegalArgumentException("Saving value out of range for type");
+ byte abyte0[] = mData;
+ int i = mPos;
+ mPos = i + 1;
+ abyte0[i] = (byte)word0;
+ }
+ }
+
+ public void align(int i)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.align(i);
+ } else
+ {
+ if(i <= 0 || (i & i - 1) != 0)
+ throw new RSIllegalArgumentException((new StringBuilder()).append("argument must be a non-negative non-zero power of 2: ").append(i).toString());
+ while((mPos & i - 1) != 0)
+ {
+ byte abyte0[] = mData;
+ int j = mPos;
+ mPos = j + 1;
+ abyte0[j] = 0;
+ }
+ }
+ }
+
+ public final byte[] getData()
+ {
+ byte abyte0[];
+ if(RenderScript.shouldThunk())
+ abyte0 = mN.getData();
+ else
+ abyte0 = mData;
+ return abyte0;
+ }
+
+ public void reset()
+ {
+ if(RenderScript.shouldThunk())
+ mN.reset();
+ else
+ mPos = 0;
+ }
+
+ public void reset(int i)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.reset(i);
+ } else
+ {
+ if(i < 0 || i >= mLen)
+ throw new RSIllegalArgumentException((new StringBuilder()).append("out of range argument: ").append(i).toString());
+ mPos = i;
+ }
+ }
+
+ public void skip(int i)
+ {
+ if(RenderScript.shouldThunk())
+ {
+ mN.skip(i);
+ } else
+ {
+ int j = i + mPos;
+ if(j < 0 || j > mLen)
+ throw new RSIllegalArgumentException((new StringBuilder()).append("out of range argument: ").append(i).toString());
+ mPos = j;
+ }
+ }
+
+ private final byte mData[];
+ private int mLen;
+ private android.renderscript.FieldPacker mN;
+ private int mPos;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Float2.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Float2.java
new file mode 100644
index 0000000..4fdaca6
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Float2.java
@@ -0,0 +1,23 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+public class Float2
+{
+
+ public Float2()
+ {
+ }
+
+ public Float2(float f, float f1)
+ {
+ x = f;
+ y = f1;
+ }
+
+ public float x;
+ public float y;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Float3.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Float3.java
new file mode 100644
index 0000000..296d48a
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Float3.java
@@ -0,0 +1,25 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+public class Float3
+{
+
+ public Float3()
+ {
+ }
+
+ public Float3(float f, float f1, float f2)
+ {
+ x = f;
+ y = f1;
+ z = f2;
+ }
+
+ public float x;
+ public float y;
+ public float z;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Float4.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Float4.java
new file mode 100644
index 0000000..33bad2e
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Float4.java
@@ -0,0 +1,27 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+public class Float4
+{
+
+ public Float4()
+ {
+ }
+
+ public Float4(float f, float f1, float f2, float f3)
+ {
+ x = f;
+ y = f1;
+ z = f2;
+ w = f3;
+ }
+
+ public float w;
+ public float x;
+ public float y;
+ public float z;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Int2.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Int2.java
new file mode 100644
index 0000000..2c97d6e
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Int2.java
@@ -0,0 +1,23 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+public class Int2
+{
+
+ public Int2()
+ {
+ }
+
+ public Int2(int i, int j)
+ {
+ x = i;
+ y = j;
+ }
+
+ public int x;
+ public int y;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Int3.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Int3.java
new file mode 100644
index 0000000..33f98b3
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Int3.java
@@ -0,0 +1,25 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+public class Int3
+{
+
+ public Int3()
+ {
+ }
+
+ public Int3(int i, int j, int k)
+ {
+ x = i;
+ y = j;
+ z = k;
+ }
+
+ public int x;
+ public int y;
+ public int z;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Int4.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Int4.java
new file mode 100644
index 0000000..e203005
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Int4.java
@@ -0,0 +1,27 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+public class Int4
+{
+
+ public Int4()
+ {
+ }
+
+ public Int4(int i, int j, int k, int l)
+ {
+ x = i;
+ y = j;
+ z = k;
+ w = l;
+ }
+
+ public int w;
+ public int x;
+ public int y;
+ public int z;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Long2.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Long2.java
new file mode 100644
index 0000000..b46a971
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Long2.java
@@ -0,0 +1,23 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+public class Long2
+{
+
+ public Long2()
+ {
+ }
+
+ public Long2(long l, long l1)
+ {
+ x = l;
+ y = l1;
+ }
+
+ public long x;
+ public long y;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Long3.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Long3.java
new file mode 100644
index 0000000..be9bcdf
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Long3.java
@@ -0,0 +1,25 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+public class Long3
+{
+
+ public Long3()
+ {
+ }
+
+ public Long3(long l, long l1, long l2)
+ {
+ x = l;
+ y = l1;
+ z = l2;
+ }
+
+ public long x;
+ public long y;
+ public long z;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Long4.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Long4.java
new file mode 100644
index 0000000..4ed9c5e
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Long4.java
@@ -0,0 +1,27 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+public class Long4
+{
+
+ public Long4()
+ {
+ }
+
+ public Long4(long l, long l1, long l2, long l3)
+ {
+ x = l;
+ y = l1;
+ z = l2;
+ w = l3;
+ }
+
+ public long w;
+ public long x;
+ public long y;
+ public long z;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Matrix2f.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Matrix2f.java
new file mode 100644
index 0000000..dbe7888
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Matrix2f.java
@@ -0,0 +1,117 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+public class Matrix2f
+{
+
+ public Matrix2f()
+ {
+ mMat = new float[4];
+ loadIdentity();
+ }
+
+ public Matrix2f(float af[])
+ {
+ mMat = new float[4];
+ System.arraycopy(af, 0, mMat, 0, mMat.length);
+ }
+
+ public float get(int i, int j)
+ {
+ return mMat[j + i * 2];
+ }
+
+ public float[] getArray()
+ {
+ return mMat;
+ }
+
+ public void load(Matrix2f matrix2f)
+ {
+ System.arraycopy(matrix2f.getArray(), 0, mMat, 0, mMat.length);
+ }
+
+ public void loadIdentity()
+ {
+ mMat[0] = 1.0F;
+ mMat[1] = 0.0F;
+ mMat[2] = 0.0F;
+ mMat[3] = 1.0F;
+ }
+
+ public void loadMultiply(Matrix2f matrix2f, Matrix2f matrix2f1)
+ {
+ for(int i = 0; i < 2; i++)
+ {
+ float f = 0.0F;
+ float f1 = 0.0F;
+ for(int j = 0; j < 2; j++)
+ {
+ float f2 = matrix2f1.get(i, j);
+ f += f2 * matrix2f.get(j, 0);
+ f1 += f2 * matrix2f.get(j, 1);
+ }
+
+ set(i, 0, f);
+ set(i, 1, f1);
+ }
+
+ }
+
+ public void loadRotate(float f)
+ {
+ float f1 = f * 0.01745329F;
+ float f2 = (float)Math.cos(f1);
+ float f3 = (float)Math.sin(f1);
+ mMat[0] = f2;
+ mMat[1] = -f3;
+ mMat[2] = f3;
+ mMat[3] = f2;
+ }
+
+ public void loadScale(float f, float f1)
+ {
+ loadIdentity();
+ mMat[0] = f;
+ mMat[3] = f1;
+ }
+
+ public void multiply(Matrix2f matrix2f)
+ {
+ Matrix2f matrix2f1 = new Matrix2f();
+ matrix2f1.loadMultiply(this, matrix2f);
+ load(matrix2f1);
+ }
+
+ public void rotate(float f)
+ {
+ Matrix2f matrix2f = new Matrix2f();
+ matrix2f.loadRotate(f);
+ multiply(matrix2f);
+ }
+
+ public void scale(float f, float f1)
+ {
+ Matrix2f matrix2f = new Matrix2f();
+ matrix2f.loadScale(f, f1);
+ multiply(matrix2f);
+ }
+
+ public void set(int i, int j, float f)
+ {
+ mMat[j + i * 2] = f;
+ }
+
+ public void transpose()
+ {
+ float f = mMat[1];
+ mMat[1] = mMat[2];
+ mMat[2] = f;
+ }
+
+ final float mMat[];
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Matrix3f.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Matrix3f.java
new file mode 100644
index 0000000..aff2ffb
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Matrix3f.java
@@ -0,0 +1,201 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+public class Matrix3f
+{
+
+ public Matrix3f()
+ {
+ mMat = new float[9];
+ loadIdentity();
+ }
+
+ public Matrix3f(float af[])
+ {
+ mMat = new float[9];
+ System.arraycopy(af, 0, mMat, 0, mMat.length);
+ }
+
+ public float get(int i, int j)
+ {
+ return mMat[j + i * 3];
+ }
+
+ public float[] getArray()
+ {
+ return mMat;
+ }
+
+ public void load(Matrix3f matrix3f)
+ {
+ System.arraycopy(matrix3f.getArray(), 0, mMat, 0, mMat.length);
+ }
+
+ public void loadIdentity()
+ {
+ mMat[0] = 1.0F;
+ mMat[1] = 0.0F;
+ mMat[2] = 0.0F;
+ mMat[3] = 0.0F;
+ mMat[4] = 1.0F;
+ mMat[5] = 0.0F;
+ mMat[6] = 0.0F;
+ mMat[7] = 0.0F;
+ mMat[8] = 1.0F;
+ }
+
+ public void loadMultiply(Matrix3f matrix3f, Matrix3f matrix3f1)
+ {
+ for(int i = 0; i < 3; i++)
+ {
+ float f = 0.0F;
+ float f1 = 0.0F;
+ float f2 = 0.0F;
+ for(int j = 0; j < 3; j++)
+ {
+ float f3 = matrix3f1.get(i, j);
+ f += f3 * matrix3f.get(j, 0);
+ f1 += f3 * matrix3f.get(j, 1);
+ f2 += f3 * matrix3f.get(j, 2);
+ }
+
+ set(i, 0, f);
+ set(i, 1, f1);
+ set(i, 2, f2);
+ }
+
+ }
+
+ public void loadRotate(float f)
+ {
+ loadIdentity();
+ float f1 = f * 0.01745329F;
+ float f2 = (float)Math.cos(f1);
+ float f3 = (float)Math.sin(f1);
+ mMat[0] = f2;
+ mMat[1] = -f3;
+ mMat[3] = f3;
+ mMat[4] = f2;
+ }
+
+ public void loadRotate(float f, float f1, float f2, float f3)
+ {
+ float f4 = f * 0.01745329F;
+ float f5 = (float)Math.cos(f4);
+ float f6 = (float)Math.sin(f4);
+ float f7 = (float)Math.sqrt(f1 * f1 + f2 * f2 + f3 * f3);
+ if(f7 == 1.0F)
+ {
+ float f15 = 1.0F / f7;
+ f1 *= f15;
+ f2 *= f15;
+ f3 *= f15;
+ }
+ float f8 = 1.0F - f5;
+ float f9 = f1 * f2;
+ float f10 = f2 * f3;
+ float f11 = f3 * f1;
+ float f12 = f1 * f6;
+ float f13 = f2 * f6;
+ float f14 = f3 * f6;
+ mMat[0] = f5 + f8 * (f1 * f1);
+ mMat[3] = f9 * f8 - f14;
+ mMat[6] = f13 + f11 * f8;
+ mMat[1] = f14 + f9 * f8;
+ mMat[4] = f5 + f8 * (f2 * f2);
+ mMat[7] = f10 * f8 - f12;
+ mMat[2] = f11 * f8 - f13;
+ mMat[5] = f12 + f10 * f8;
+ mMat[8] = f5 + f8 * (f3 * f3);
+ }
+
+ public void loadScale(float f, float f1)
+ {
+ loadIdentity();
+ mMat[0] = f;
+ mMat[4] = f1;
+ }
+
+ public void loadScale(float f, float f1, float f2)
+ {
+ loadIdentity();
+ mMat[0] = f;
+ mMat[4] = f1;
+ mMat[8] = f2;
+ }
+
+ public void loadTranslate(float f, float f1)
+ {
+ loadIdentity();
+ mMat[6] = f;
+ mMat[7] = f1;
+ }
+
+ public void multiply(Matrix3f matrix3f)
+ {
+ Matrix3f matrix3f1 = new Matrix3f();
+ matrix3f1.loadMultiply(this, matrix3f);
+ load(matrix3f1);
+ }
+
+ public void rotate(float f)
+ {
+ Matrix3f matrix3f = new Matrix3f();
+ matrix3f.loadRotate(f);
+ multiply(matrix3f);
+ }
+
+ public void rotate(float f, float f1, float f2, float f3)
+ {
+ Matrix3f matrix3f = new Matrix3f();
+ matrix3f.loadRotate(f, f1, f2, f3);
+ multiply(matrix3f);
+ }
+
+ public void scale(float f, float f1)
+ {
+ Matrix3f matrix3f = new Matrix3f();
+ matrix3f.loadScale(f, f1);
+ multiply(matrix3f);
+ }
+
+ public void scale(float f, float f1, float f2)
+ {
+ Matrix3f matrix3f = new Matrix3f();
+ matrix3f.loadScale(f, f1, f2);
+ multiply(matrix3f);
+ }
+
+ public void set(int i, int j, float f)
+ {
+ mMat[j + i * 3] = f;
+ }
+
+ public void translate(float f, float f1)
+ {
+ Matrix3f matrix3f = new Matrix3f();
+ matrix3f.loadTranslate(f, f1);
+ multiply(matrix3f);
+ }
+
+ public void transpose()
+ {
+ for(int i = 0; i < 2; i++)
+ {
+ for(int j = i + 1; j < 3; j++)
+ {
+ float f = mMat[j + i * 3];
+ mMat[j + i * 3] = mMat[i + j * 3];
+ mMat[i + j * 3] = f;
+ }
+
+ }
+
+ }
+
+ final float mMat[];
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Matrix4f.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Matrix4f.java
new file mode 100644
index 0000000..5881d79
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Matrix4f.java
@@ -0,0 +1,330 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+// Referenced classes of package android.support.v8.renderscript:
+// Matrix3f
+
+public class Matrix4f
+{
+
+ public Matrix4f()
+ {
+ mMat = new float[16];
+ loadIdentity();
+ }
+
+ public Matrix4f(float af[])
+ {
+ mMat = new float[16];
+ System.arraycopy(af, 0, mMat, 0, mMat.length);
+ }
+
+ private float computeCofactor(int i, int j)
+ {
+ int k = (i + 1) % 4;
+ int l = (i + 2) % 4;
+ int i1 = (i + 3) % 4;
+ int j1 = (j + 1) % 4;
+ int k1 = (j + 2) % 4;
+ int l1 = (j + 3) % 4;
+ float f = (mMat[k + j1 * 4] * (mMat[l + k1 * 4] * mMat[i1 + l1 * 4] - mMat[l + l1 * 4] * mMat[i1 + k1 * 4]) - mMat[k + k1 * 4] * (mMat[l + j1 * 4] * mMat[i1 + l1 * 4] - mMat[l + l1 * 4] * mMat[i1 + j1 * 4])) + mMat[k + l1 * 4] * (mMat[l + j1 * 4] * mMat[i1 + k1 * 4] - mMat[l + k1 * 4] * mMat[i1 + j1 * 4]);
+ float f1;
+ if((1 & i + j) != 0)
+ f1 = -f;
+ else
+ f1 = f;
+ return f1;
+ }
+
+ public float get(int i, int j)
+ {
+ return mMat[j + i * 4];
+ }
+
+ public float[] getArray()
+ {
+ return mMat;
+ }
+
+ public boolean inverse()
+ {
+ boolean flag = false;
+ Matrix4f matrix4f = new Matrix4f();
+ for(int i = 0; i < 4; i++)
+ {
+ for(int k = 0; k < 4; k++)
+ matrix4f.mMat[k + i * 4] = computeCofactor(i, k);
+
+ }
+
+ float f = mMat[0] * matrix4f.mMat[0] + mMat[4] * matrix4f.mMat[1] + mMat[8] * matrix4f.mMat[2] + mMat[12] * matrix4f.mMat[3];
+ if((double)Math.abs(f) >= 9.9999999999999995E-007D)
+ {
+ float f1 = 1.0F / f;
+ for(int j = 0; j < 16; j++)
+ mMat[j] = f1 * matrix4f.mMat[j];
+
+ flag = true;
+ }
+ return flag;
+ }
+
+ public boolean inverseTranspose()
+ {
+ boolean flag = false;
+ Matrix4f matrix4f = new Matrix4f();
+ for(int i = 0; i < 4; i++)
+ {
+ for(int k = 0; k < 4; k++)
+ matrix4f.mMat[i + k * 4] = computeCofactor(i, k);
+
+ }
+
+ float f = mMat[0] * matrix4f.mMat[0] + mMat[4] * matrix4f.mMat[4] + mMat[8] * matrix4f.mMat[8] + mMat[12] * matrix4f.mMat[12];
+ if((double)Math.abs(f) >= 9.9999999999999995E-007D)
+ {
+ float f1 = 1.0F / f;
+ for(int j = 0; j < 16; j++)
+ mMat[j] = f1 * matrix4f.mMat[j];
+
+ flag = true;
+ }
+ return flag;
+ }
+
+ public void load(Matrix3f matrix3f)
+ {
+ mMat[0] = matrix3f.mMat[0];
+ mMat[1] = matrix3f.mMat[1];
+ mMat[2] = matrix3f.mMat[2];
+ mMat[3] = 0.0F;
+ mMat[4] = matrix3f.mMat[3];
+ mMat[5] = matrix3f.mMat[4];
+ mMat[6] = matrix3f.mMat[5];
+ mMat[7] = 0.0F;
+ mMat[8] = matrix3f.mMat[6];
+ mMat[9] = matrix3f.mMat[7];
+ mMat[10] = matrix3f.mMat[8];
+ mMat[11] = 0.0F;
+ mMat[12] = 0.0F;
+ mMat[13] = 0.0F;
+ mMat[14] = 0.0F;
+ mMat[15] = 1.0F;
+ }
+
+ public void load(Matrix4f matrix4f)
+ {
+ System.arraycopy(matrix4f.getArray(), 0, mMat, 0, mMat.length);
+ }
+
+ public void loadFrustum(float f, float f1, float f2, float f3, float f4, float f5)
+ {
+ loadIdentity();
+ mMat[0] = (2.0F * f4) / (f1 - f);
+ mMat[5] = (2.0F * f4) / (f3 - f2);
+ mMat[8] = (f1 + f) / (f1 - f);
+ mMat[9] = (f3 + f2) / (f3 - f2);
+ mMat[10] = -(f5 + f4) / (f5 - f4);
+ mMat[11] = -1F;
+ mMat[14] = (f4 * (-2F * f5)) / (f5 - f4);
+ mMat[15] = 0.0F;
+ }
+
+ public void loadIdentity()
+ {
+ mMat[0] = 1.0F;
+ mMat[1] = 0.0F;
+ mMat[2] = 0.0F;
+ mMat[3] = 0.0F;
+ mMat[4] = 0.0F;
+ mMat[5] = 1.0F;
+ mMat[6] = 0.0F;
+ mMat[7] = 0.0F;
+ mMat[8] = 0.0F;
+ mMat[9] = 0.0F;
+ mMat[10] = 1.0F;
+ mMat[11] = 0.0F;
+ mMat[12] = 0.0F;
+ mMat[13] = 0.0F;
+ mMat[14] = 0.0F;
+ mMat[15] = 1.0F;
+ }
+
+ public void loadMultiply(Matrix4f matrix4f, Matrix4f matrix4f1)
+ {
+ for(int i = 0; i < 4; i++)
+ {
+ float f = 0.0F;
+ float f1 = 0.0F;
+ float f2 = 0.0F;
+ float f3 = 0.0F;
+ for(int j = 0; j < 4; j++)
+ {
+ float f4 = matrix4f1.get(i, j);
+ f += f4 * matrix4f.get(j, 0);
+ f1 += f4 * matrix4f.get(j, 1);
+ f2 += f4 * matrix4f.get(j, 2);
+ f3 += f4 * matrix4f.get(j, 3);
+ }
+
+ set(i, 0, f);
+ set(i, 1, f1);
+ set(i, 2, f2);
+ set(i, 3, f3);
+ }
+
+ }
+
+ public void loadOrtho(float f, float f1, float f2, float f3, float f4, float f5)
+ {
+ loadIdentity();
+ mMat[0] = 2.0F / (f1 - f);
+ mMat[5] = 2.0F / (f3 - f2);
+ mMat[10] = -2F / (f5 - f4);
+ mMat[12] = -(f1 + f) / (f1 - f);
+ mMat[13] = -(f3 + f2) / (f3 - f2);
+ mMat[14] = -(f5 + f4) / (f5 - f4);
+ }
+
+ public void loadOrthoWindow(int i, int j)
+ {
+ loadOrtho(0.0F, i, j, 0.0F, -1F, 1.0F);
+ }
+
+ public void loadPerspective(float f, float f1, float f2, float f3)
+ {
+ float f4 = f2 * (float)Math.tan((float)((3.1415926535897931D * (double)f) / 360D));
+ float f5 = -f4;
+ loadFrustum(f5 * f1, f4 * f1, f5, f4, f2, f3);
+ }
+
+ public void loadProjectionNormalized(int i, int j)
+ {
+ Matrix4f matrix4f = new Matrix4f();
+ Matrix4f matrix4f1 = new Matrix4f();
+ if(i > j)
+ {
+ float f1 = (float)i / (float)j;
+ matrix4f.loadFrustum(-f1, f1, -1F, 1.0F, 1.0F, 100F);
+ } else
+ {
+ float f = (float)j / (float)i;
+ matrix4f.loadFrustum(-1F, 1.0F, -f, f, 1.0F, 100F);
+ }
+ matrix4f1.loadRotate(180F, 0.0F, 1.0F, 0.0F);
+ matrix4f.loadMultiply(matrix4f, matrix4f1);
+ matrix4f1.loadScale(-2F, 2.0F, 1.0F);
+ matrix4f.loadMultiply(matrix4f, matrix4f1);
+ matrix4f1.loadTranslate(0.0F, 0.0F, 2.0F);
+ matrix4f.loadMultiply(matrix4f, matrix4f1);
+ load(matrix4f);
+ }
+
+ public void loadRotate(float f, float f1, float f2, float f3)
+ {
+ mMat[3] = 0.0F;
+ mMat[7] = 0.0F;
+ mMat[11] = 0.0F;
+ mMat[12] = 0.0F;
+ mMat[13] = 0.0F;
+ mMat[14] = 0.0F;
+ mMat[15] = 1.0F;
+ float f4 = f * 0.01745329F;
+ float f5 = (float)Math.cos(f4);
+ float f6 = (float)Math.sin(f4);
+ float f7 = (float)Math.sqrt(f1 * f1 + f2 * f2 + f3 * f3);
+ if(f7 == 1.0F)
+ {
+ float f15 = 1.0F / f7;
+ f1 *= f15;
+ f2 *= f15;
+ f3 *= f15;
+ }
+ float f8 = 1.0F - f5;
+ float f9 = f1 * f2;
+ float f10 = f2 * f3;
+ float f11 = f3 * f1;
+ float f12 = f1 * f6;
+ float f13 = f2 * f6;
+ float f14 = f3 * f6;
+ mMat[0] = f5 + f8 * (f1 * f1);
+ mMat[4] = f9 * f8 - f14;
+ mMat[8] = f13 + f11 * f8;
+ mMat[1] = f14 + f9 * f8;
+ mMat[5] = f5 + f8 * (f2 * f2);
+ mMat[9] = f10 * f8 - f12;
+ mMat[2] = f11 * f8 - f13;
+ mMat[6] = f12 + f10 * f8;
+ mMat[10] = f5 + f8 * (f3 * f3);
+ }
+
+ public void loadScale(float f, float f1, float f2)
+ {
+ loadIdentity();
+ mMat[0] = f;
+ mMat[5] = f1;
+ mMat[10] = f2;
+ }
+
+ public void loadTranslate(float f, float f1, float f2)
+ {
+ loadIdentity();
+ mMat[12] = f;
+ mMat[13] = f1;
+ mMat[14] = f2;
+ }
+
+ public void multiply(Matrix4f matrix4f)
+ {
+ Matrix4f matrix4f1 = new Matrix4f();
+ matrix4f1.loadMultiply(this, matrix4f);
+ load(matrix4f1);
+ }
+
+ public void rotate(float f, float f1, float f2, float f3)
+ {
+ Matrix4f matrix4f = new Matrix4f();
+ matrix4f.loadRotate(f, f1, f2, f3);
+ multiply(matrix4f);
+ }
+
+ public void scale(float f, float f1, float f2)
+ {
+ Matrix4f matrix4f = new Matrix4f();
+ matrix4f.loadScale(f, f1, f2);
+ multiply(matrix4f);
+ }
+
+ public void set(int i, int j, float f)
+ {
+ mMat[j + i * 4] = f;
+ }
+
+ public void translate(float f, float f1, float f2)
+ {
+ Matrix4f matrix4f = new Matrix4f();
+ matrix4f.loadTranslate(f, f1, f2);
+ multiply(matrix4f);
+ }
+
+ public void transpose()
+ {
+ for(int i = 0; i < 3; i++)
+ {
+ for(int j = i + 1; j < 4; j++)
+ {
+ float f = mMat[j + i * 4];
+ mMat[j + i * 4] = mMat[i + j * 4];
+ mMat[i + j * 4] = f;
+ }
+
+ }
+
+ }
+
+ final float mMat[];
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/RSDriverException.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/RSDriverException.java
new file mode 100644
index 0000000..f0da768
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/RSDriverException.java
@@ -0,0 +1,18 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+// Referenced classes of package android.support.v8.renderscript:
+// RSRuntimeException
+
+public class RSDriverException extends RSRuntimeException
+{
+
+ public RSDriverException(String s)
+ {
+ super(s);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/RSIllegalArgumentException.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/RSIllegalArgumentException.java
new file mode 100644
index 0000000..be4e542
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/RSIllegalArgumentException.java
@@ -0,0 +1,18 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+// Referenced classes of package android.support.v8.renderscript:
+// RSRuntimeException
+
+public class RSIllegalArgumentException extends RSRuntimeException
+{
+
+ public RSIllegalArgumentException(String s)
+ {
+ super(s);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/RSInvalidStateException.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/RSInvalidStateException.java
new file mode 100644
index 0000000..ee01b7e
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/RSInvalidStateException.java
@@ -0,0 +1,18 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+// Referenced classes of package android.support.v8.renderscript:
+// RSRuntimeException
+
+public class RSInvalidStateException extends RSRuntimeException
+{
+
+ public RSInvalidStateException(String s)
+ {
+ super(s);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/RSRuntimeException.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/RSRuntimeException.java
new file mode 100644
index 0000000..19c98de
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/RSRuntimeException.java
@@ -0,0 +1,15 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+public class RSRuntimeException extends RuntimeException
+{
+
+ public RSRuntimeException(String s)
+ {
+ super(s);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/RenderScript.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/RenderScript.java
new file mode 100644
index 0000000..cf217dd
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/RenderScript.java
@@ -0,0 +1,1993 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.graphics.Bitmap;
+import android.os.SystemProperties;
+import android.util.Log;
+import java.io.File;
+import java.lang.reflect.Method;
+
+// Referenced classes of package android.support.v8.renderscript:
+// RenderScriptThunker, RSDriverException, RSRuntimeException, BaseObj,
+// RSInvalidStateException, Element, Sampler
+
+public class RenderScript
+{
+ static class MessageThread extends Thread
+ {
+
+ public void run()
+ {
+ int ai[] = new int[16];
+ mRS.nContextInitToClient(mRS.mContext);
+ while(mRun)
+ {
+ ai[0] = 0;
+ int i = mRS.nContextPeekMessage(mRS.mContext, mAuxData);
+ int j = mAuxData[1];
+ int k = mAuxData[0];
+ if(i == 4)
+ {
+ if(j >> 2 >= ai.length)
+ ai = new int[j + 3 >> 2];
+ if(mRS.nContextGetUserMessage(mRS.mContext, ai) != 4)
+ throw new RSDriverException("Error processing message from RenderScript.");
+ if(mRS.mMessageCallback != null)
+ {
+ mRS.mMessageCallback.mData = ai;
+ mRS.mMessageCallback.mID = k;
+ mRS.mMessageCallback.mLength = j;
+ mRS.mMessageCallback.run();
+ } else
+ {
+ throw new RSInvalidStateException("Received a message from the script with no message handler installed.");
+ }
+ } else
+ if(i == 3)
+ {
+ String s = mRS.nContextGetErrorMessage(mRS.mContext);
+ if(k >= 4096)
+ throw new RSRuntimeException((new StringBuilder()).append("Fatal error ").append(k).append(", details: ").append(s).toString());
+ if(mRS.mErrorCallback != null)
+ {
+ mRS.mErrorCallback.mErrorMessage = s;
+ mRS.mErrorCallback.mErrorNum = k;
+ mRS.mErrorCallback.run();
+ } else
+ {
+ Log.e("RenderScript_jni", (new StringBuilder()).append("non fatal RS error, ").append(s).toString());
+ }
+ } else
+ {
+ try
+ {
+ sleep(1L, 0);
+ }
+ catch(InterruptedException interruptedexception) { }
+ }
+ }
+ }
+
+ static final int RS_ERROR_FATAL_UNKNOWN = 4096;
+ static final int RS_MESSAGE_TO_CLIENT_ERROR = 3;
+ static final int RS_MESSAGE_TO_CLIENT_EXCEPTION = 1;
+ static final int RS_MESSAGE_TO_CLIENT_NONE = 0;
+ static final int RS_MESSAGE_TO_CLIENT_RESIZE = 2;
+ static final int RS_MESSAGE_TO_CLIENT_USER = 4;
+ int mAuxData[];
+ RenderScript mRS;
+ boolean mRun;
+
+ MessageThread(RenderScript renderscript)
+ {
+ super("RSMessageThread");
+ mRun = true;
+ mAuxData = new int[2];
+ mRS = renderscript;
+ }
+ }
+
+ public static final class Priority extends Enum
+ {
+
+ public static Priority valueOf(String s)
+ {
+ return (Priority)Enum.valueOf(android/support/v8/renderscript/RenderScript$Priority, s);
+ }
+
+ public static Priority[] values()
+ {
+ return (Priority[])$VALUES.clone();
+ }
+
+ private static final Priority $VALUES[];
+ public static final Priority LOW;
+ public static final Priority NORMAL;
+ int mID;
+
+ static
+ {
+ LOW = new Priority("LOW", 0, 15);
+ NORMAL = new Priority("NORMAL", 1, -4);
+ Priority apriority[] = new Priority[2];
+ apriority[0] = LOW;
+ apriority[1] = NORMAL;
+ $VALUES = apriority;
+ }
+
+ private Priority(String s, int i, int j)
+ {
+ super(s, i);
+ mID = j;
+ }
+ }
+
+ public static class RSErrorHandler
+ implements Runnable
+ {
+
+ public void run()
+ {
+ }
+
+ protected String mErrorMessage;
+ protected int mErrorNum;
+
+ public RSErrorHandler()
+ {
+ }
+ }
+
+ public static class RSMessageHandler
+ implements Runnable
+ {
+
+ public void run()
+ {
+ }
+
+ protected int mData[];
+ protected int mID;
+ protected int mLength;
+
+ public RSMessageHandler()
+ {
+ }
+ }
+
+ public static final class ContextType extends Enum
+ {
+
+ public static ContextType valueOf(String s)
+ {
+ return (ContextType)Enum.valueOf(android/support/v8/renderscript/RenderScript$ContextType, s);
+ }
+
+ public static ContextType[] values()
+ {
+ return (ContextType[])$VALUES.clone();
+ }
+
+ private static final ContextType $VALUES[];
+ public static final ContextType DEBUG;
+ public static final ContextType NORMAL;
+ public static final ContextType PROFILE;
+ int mID;
+
+ static
+ {
+ NORMAL = new ContextType("NORMAL", 0, 0);
+ DEBUG = new ContextType("DEBUG", 1, 1);
+ PROFILE = new ContextType("PROFILE", 2, 2);
+ ContextType acontexttype[] = new ContextType[3];
+ acontexttype[0] = NORMAL;
+ acontexttype[1] = DEBUG;
+ acontexttype[2] = PROFILE;
+ $VALUES = acontexttype;
+ }
+
+ private ContextType(String s, int i, int j)
+ {
+ super(s, i);
+ mID = j;
+ }
+ }
+
+
+ RenderScript(Context context)
+ {
+ mMessageCallback = null;
+ mErrorCallback = null;
+ if(context != null)
+ mApplicationContext = context.getApplicationContext();
+ }
+
+ public static RenderScript create(Context context)
+ {
+ return create(context, ContextType.NORMAL);
+ }
+
+ public static RenderScript create(Context context, int i)
+ {
+ return create(context, i, ContextType.NORMAL);
+ }
+
+ public static RenderScript create(Context context, int i, ContextType contexttype)
+ {
+ RenderScript renderscript = new RenderScript(context);
+ if(!shouldThunk()) goto _L2; else goto _L1
+_L1:
+ Log.v("RenderScript_jni", "RS native mode");
+ renderscript = RenderScriptThunker.create(context, i);
+_L4:
+ return renderscript;
+_L2:
+ Object obj = lock;
+ obj;
+ JVM INSTR monitorenter ;
+ boolean flag = sInitialized;
+ if(flag)
+ break MISSING_BLOCK_LABEL_146;
+ try
+ {
+ Class class1 = Class.forName("dalvik.system.VMRuntime");
+ sRuntime = class1.getDeclaredMethod("getRuntime", new Class[0]).invoke(null, new Object[0]);
+ Class aclass[] = new Class[1];
+ aclass[0] = Integer.TYPE;
+ registerNativeAllocation = class1.getDeclaredMethod("registerNativeAllocation", aclass);
+ Class aclass1[] = new Class[1];
+ aclass1[0] = Integer.TYPE;
+ registerNativeFree = class1.getDeclaredMethod("registerNativeFree", aclass1);
+ sUseGCHooks = true;
+ }
+ catch(Exception exception1)
+ {
+ Log.e("RenderScript_jni", "No GC methods");
+ sUseGCHooks = false;
+ }
+ System.loadLibrary("RSSupport");
+ System.loadLibrary("rsjni");
+ sInitialized = true;
+ obj;
+ JVM INSTR monitorexit ;
+ Log.v("RenderScript_jni", "RS compat mode");
+ renderscript.mDev = renderscript.nDeviceCreate();
+ renderscript.mContext = renderscript.nContextCreate(renderscript.mDev, 0, i, contexttype.mID);
+ if(renderscript.mContext == 0)
+ throw new RSDriverException("Failed to create RS context.");
+ break MISSING_BLOCK_LABEL_283;
+ Exception exception;
+ exception;
+ throw exception;
+ UnsatisfiedLinkError unsatisfiedlinkerror;
+ unsatisfiedlinkerror;
+ Log.e("RenderScript_jni", (new StringBuilder()).append("Error loading RS jni library: ").append(unsatisfiedlinkerror).toString());
+ throw new RSRuntimeException((new StringBuilder()).append("Error loading RS jni library: ").append(unsatisfiedlinkerror).toString());
+ renderscript.mMessageThread = new MessageThread(renderscript);
+ renderscript.mMessageThread.start();
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ public static RenderScript create(Context context, ContextType contexttype)
+ {
+ return create(context, context.getApplicationInfo().targetSdkVersion, contexttype);
+ }
+
+ public static void setupDiskCache(File file)
+ {
+ File file1 = new File(file, "com.android.renderscript.cache");
+ mCachePath = file1.getAbsolutePath();
+ file1.mkdirs();
+ }
+
+ static boolean shouldThunk()
+ {
+ boolean flag = true;
+ if(thunk == 0)
+ if(android.os.Build.VERSION.SDK_INT >= 18 && SystemProperties.getInt("debug.rs.forcecompat", 0) == 0)
+ thunk = ((flag) ? 1 : 0);
+ else
+ thunk = -1;
+ if(thunk != flag)
+ flag = false;
+ return flag;
+ }
+
+ public void contextDump()
+ {
+ validate();
+ nContextDump(0);
+ }
+
+ public void destroy()
+ {
+ validate();
+ nContextDeinitToClient(mContext);
+ mMessageThread.mRun = false;
+ try
+ {
+ mMessageThread.join();
+ }
+ catch(InterruptedException interruptedexception) { }
+ nContextDestroy();
+ mContext = 0;
+ nDeviceDestroy(mDev);
+ mDev = 0;
+ }
+
+ public void finish()
+ {
+ nContextFinish();
+ }
+
+ public final Context getApplicationContext()
+ {
+ return mApplicationContext;
+ }
+
+ public RSErrorHandler getErrorHandler()
+ {
+ return mErrorCallback;
+ }
+
+ public RSMessageHandler getMessageHandler()
+ {
+ return mMessageCallback;
+ }
+
+ boolean isAlive()
+ {
+ boolean flag;
+ if(mContext != 0)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ /**
+ * @deprecated Method nAllocationCopyFromBitmap is deprecated
+ */
+
+ void nAllocationCopyFromBitmap(int i, Bitmap bitmap)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnAllocationCopyFromBitmap(mContext, i, bitmap);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationCopyToBitmap is deprecated
+ */
+
+ void nAllocationCopyToBitmap(int i, Bitmap bitmap)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnAllocationCopyToBitmap(mContext, i, bitmap);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationCreateBitmapBackedAllocation is deprecated
+ */
+
+ int nAllocationCreateBitmapBackedAllocation(int i, int j, Bitmap bitmap, int k)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ int l;
+ validate();
+ l = rsnAllocationCreateBitmapBackedAllocation(mContext, i, j, bitmap, k);
+ this;
+ JVM INSTR monitorexit ;
+ return l;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationCreateBitmapRef is deprecated
+ */
+
+ int nAllocationCreateBitmapRef(int i, Bitmap bitmap)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ int j;
+ validate();
+ j = rsnAllocationCreateBitmapRef(mContext, i, bitmap);
+ this;
+ JVM INSTR monitorexit ;
+ return j;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationCreateFromAssetStream is deprecated
+ */
+
+ int nAllocationCreateFromAssetStream(int i, int j, int k)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ int l;
+ validate();
+ l = rsnAllocationCreateFromAssetStream(mContext, i, j, k);
+ this;
+ JVM INSTR monitorexit ;
+ return l;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationCreateFromBitmap is deprecated
+ */
+
+ int nAllocationCreateFromBitmap(int i, int j, Bitmap bitmap, int k)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ int l;
+ validate();
+ l = rsnAllocationCreateFromBitmap(mContext, i, j, bitmap, k);
+ this;
+ JVM INSTR monitorexit ;
+ return l;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationCreateTyped is deprecated
+ */
+
+ int nAllocationCreateTyped(int i, int j, int k, int l)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ int i1;
+ validate();
+ i1 = rsnAllocationCreateTyped(mContext, i, j, k, l);
+ this;
+ JVM INSTR monitorexit ;
+ return i1;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationCubeCreateFromBitmap is deprecated
+ */
+
+ int nAllocationCubeCreateFromBitmap(int i, int j, Bitmap bitmap, int k)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ int l;
+ validate();
+ l = rsnAllocationCubeCreateFromBitmap(mContext, i, j, bitmap, k);
+ this;
+ JVM INSTR monitorexit ;
+ return l;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationData1D is deprecated
+ */
+
+ void nAllocationData1D(int i, int j, int k, int l, byte abyte0[], int i1)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnAllocationData1D(mContext, i, j, k, l, abyte0, i1);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationData1D is deprecated
+ */
+
+ void nAllocationData1D(int i, int j, int k, int l, float af[], int i1)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnAllocationData1D(mContext, i, j, k, l, af, i1);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationData1D is deprecated
+ */
+
+ void nAllocationData1D(int i, int j, int k, int l, int ai[], int i1)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnAllocationData1D(mContext, i, j, k, l, ai, i1);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationData1D is deprecated
+ */
+
+ void nAllocationData1D(int i, int j, int k, int l, short aword0[], int i1)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnAllocationData1D(mContext, i, j, k, l, aword0, i1);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationData2D is deprecated
+ */
+
+ void nAllocationData2D(int i, int j, int k, int l, int i1, int j1, int k1,
+ int l1, int i2, int j2, int k2, int l2)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnAllocationData2D(mContext, i, j, k, l, i1, j1, k1, l1, i2, j2, k2, l2);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationData2D is deprecated
+ */
+
+ void nAllocationData2D(int i, int j, int k, int l, int i1, int j1, int k1,
+ byte abyte0[], int l1)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnAllocationData2D(mContext, i, j, k, l, i1, j1, k1, abyte0, l1);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationData2D is deprecated
+ */
+
+ void nAllocationData2D(int i, int j, int k, int l, int i1, int j1, int k1,
+ float af[], int l1)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnAllocationData2D(mContext, i, j, k, l, i1, j1, k1, af, l1);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationData2D is deprecated
+ */
+
+ void nAllocationData2D(int i, int j, int k, int l, int i1, int j1, int k1,
+ int ai[], int l1)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnAllocationData2D(mContext, i, j, k, l, i1, j1, k1, ai, l1);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationData2D is deprecated
+ */
+
+ void nAllocationData2D(int i, int j, int k, int l, int i1, int j1, int k1,
+ short aword0[], int l1)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnAllocationData2D(mContext, i, j, k, l, i1, j1, k1, aword0, l1);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationData2D is deprecated
+ */
+
+ void nAllocationData2D(int i, int j, int k, int l, int i1, Bitmap bitmap)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnAllocationData2D(mContext, i, j, k, l, i1, bitmap);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationData3D is deprecated
+ */
+
+ void nAllocationData3D(int i, int j, int k, int l, int i1, int j1, int k1,
+ int l1, int i2, int j2, int k2, int l2, int i3)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnAllocationData3D(mContext, i, j, k, l, i1, j1, k1, l1, i2, j2, k2, l2, i3);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationData3D is deprecated
+ */
+
+ void nAllocationData3D(int i, int j, int k, int l, int i1, int j1, int k1,
+ int l1, byte abyte0[], int i2)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnAllocationData3D(mContext, i, j, k, l, i1, j1, k1, l1, abyte0, i2);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationData3D is deprecated
+ */
+
+ void nAllocationData3D(int i, int j, int k, int l, int i1, int j1, int k1,
+ int l1, float af[], int i2)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnAllocationData3D(mContext, i, j, k, l, i1, j1, k1, l1, af, i2);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationData3D is deprecated
+ */
+
+ void nAllocationData3D(int i, int j, int k, int l, int i1, int j1, int k1,
+ int l1, int ai[], int i2)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnAllocationData3D(mContext, i, j, k, l, i1, j1, k1, l1, ai, i2);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationData3D is deprecated
+ */
+
+ void nAllocationData3D(int i, int j, int k, int l, int i1, int j1, int k1,
+ int l1, short aword0[], int i2)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnAllocationData3D(mContext, i, j, k, l, i1, j1, k1, l1, aword0, i2);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationElementData1D is deprecated
+ */
+
+ void nAllocationElementData1D(int i, int j, int k, int l, byte abyte0[], int i1)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnAllocationElementData1D(mContext, i, j, k, l, abyte0, i1);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationGenerateMipmaps is deprecated
+ */
+
+ void nAllocationGenerateMipmaps(int i)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnAllocationGenerateMipmaps(mContext, i);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationGetType is deprecated
+ */
+
+ int nAllocationGetType(int i)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ int j;
+ validate();
+ j = rsnAllocationGetType(mContext, i);
+ this;
+ JVM INSTR monitorexit ;
+ return j;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationIoReceive is deprecated
+ */
+
+ void nAllocationIoReceive(int i)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnAllocationIoReceive(mContext, i);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationIoSend is deprecated
+ */
+
+ void nAllocationIoSend(int i)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnAllocationIoSend(mContext, i);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationRead is deprecated
+ */
+
+ void nAllocationRead(int i, byte abyte0[])
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnAllocationRead(mContext, i, abyte0);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationRead is deprecated
+ */
+
+ void nAllocationRead(int i, float af[])
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnAllocationRead(mContext, i, af);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationRead is deprecated
+ */
+
+ void nAllocationRead(int i, int ai[])
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnAllocationRead(mContext, i, ai);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationRead is deprecated
+ */
+
+ void nAllocationRead(int i, short aword0[])
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnAllocationRead(mContext, i, aword0);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationResize1D is deprecated
+ */
+
+ void nAllocationResize1D(int i, int j)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnAllocationResize1D(mContext, i, j);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationResize2D is deprecated
+ */
+
+ void nAllocationResize2D(int i, int j, int k)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnAllocationResize2D(mContext, i, j, k);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nAllocationSyncAll is deprecated
+ */
+
+ void nAllocationSyncAll(int i, int j)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnAllocationSyncAll(mContext, i, j);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nContextCreate is deprecated
+ */
+
+ int nContextCreate(int i, int j, int k, int l)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ int i1 = rsnContextCreate(i, j, k, l);
+ this;
+ JVM INSTR monitorexit ;
+ return i1;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ native void nContextDeinitToClient(int i);
+
+ /**
+ * @deprecated Method nContextDestroy is deprecated
+ */
+
+ void nContextDestroy()
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnContextDestroy(mContext);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nContextDump is deprecated
+ */
+
+ void nContextDump(int i)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnContextDump(mContext, i);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nContextFinish is deprecated
+ */
+
+ void nContextFinish()
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnContextFinish(mContext);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ native String nContextGetErrorMessage(int i);
+
+ native int nContextGetUserMessage(int i, int ai[]);
+
+ native void nContextInitToClient(int i);
+
+ native int nContextPeekMessage(int i, int ai[]);
+
+ /**
+ * @deprecated Method nContextSendMessage is deprecated
+ */
+
+ void nContextSendMessage(int i, int ai[])
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnContextSendMessage(mContext, i, ai);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nContextSetPriority is deprecated
+ */
+
+ void nContextSetPriority(int i)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnContextSetPriority(mContext, i);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ native int nDeviceCreate();
+
+ native void nDeviceDestroy(int i);
+
+ native void nDeviceSetConfig(int i, int j, int k);
+
+ /**
+ * @deprecated Method nElementCreate is deprecated
+ */
+
+ int nElementCreate(int i, int j, boolean flag, int k)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ int l;
+ validate();
+ l = rsnElementCreate(mContext, i, j, flag, k);
+ this;
+ JVM INSTR monitorexit ;
+ return l;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nElementCreate2 is deprecated
+ */
+
+ int nElementCreate2(int ai[], String as[], int ai1[])
+ {
+ this;
+ JVM INSTR monitorenter ;
+ int i;
+ validate();
+ i = rsnElementCreate2(mContext, ai, as, ai1);
+ this;
+ JVM INSTR monitorexit ;
+ return i;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nElementGetNativeData is deprecated
+ */
+
+ void nElementGetNativeData(int i, int ai[])
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnElementGetNativeData(mContext, i, ai);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nElementGetSubElements is deprecated
+ */
+
+ void nElementGetSubElements(int i, int ai[], String as[], int ai1[])
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnElementGetSubElements(mContext, i, ai, as, ai1);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nObjDestroy is deprecated
+ */
+
+ void nObjDestroy(int i)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ if(mContext != 0)
+ rsnObjDestroy(mContext, i);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nSamplerCreate is deprecated
+ */
+
+ int nSamplerCreate(int i, int j, int k, int l, int i1, float f)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ int j1;
+ validate();
+ j1 = rsnSamplerCreate(mContext, i, j, k, l, i1, f);
+ this;
+ JVM INSTR monitorexit ;
+ return j1;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nScriptBindAllocation is deprecated
+ */
+
+ void nScriptBindAllocation(int i, int j, int k)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnScriptBindAllocation(mContext, i, j, k);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nScriptCCreate is deprecated
+ */
+
+ int nScriptCCreate(String s, String s1, byte abyte0[], int i)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ int j;
+ validate();
+ j = rsnScriptCCreate(mContext, s, s1, abyte0, i);
+ this;
+ JVM INSTR monitorexit ;
+ return j;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nScriptFieldIDCreate is deprecated
+ */
+
+ int nScriptFieldIDCreate(int i, int j)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ int k;
+ validate();
+ k = rsnScriptFieldIDCreate(mContext, i, j);
+ this;
+ JVM INSTR monitorexit ;
+ return k;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nScriptForEach is deprecated
+ */
+
+ void nScriptForEach(int i, int j, int k, int l, byte abyte0[])
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ if(abyte0 != null)
+ break MISSING_BLOCK_LABEL_27;
+ rsnScriptForEach(mContext, i, j, k, l);
+_L1:
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ rsnScriptForEach(mContext, i, j, k, l, abyte0);
+ goto _L1
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nScriptForEachClipped is deprecated
+ */
+
+ void nScriptForEachClipped(int i, int j, int k, int l, byte abyte0[], int i1, int j1,
+ int k1, int l1, int i2, int j2)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ if(abyte0 != null)
+ break MISSING_BLOCK_LABEL_39;
+ rsnScriptForEachClipped(mContext, i, j, k, l, i1, j1, k1, l1, i2, j2);
+_L1:
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ rsnScriptForEachClipped(mContext, i, j, k, l, abyte0, i1, j1, k1, l1, i2, j2);
+ goto _L1
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nScriptGroupCreate is deprecated
+ */
+
+ int nScriptGroupCreate(int ai[], int ai1[], int ai2[], int ai3[], int ai4[])
+ {
+ this;
+ JVM INSTR monitorenter ;
+ int i;
+ validate();
+ i = rsnScriptGroupCreate(mContext, ai, ai1, ai2, ai3, ai4);
+ this;
+ JVM INSTR monitorexit ;
+ return i;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nScriptGroupExecute is deprecated
+ */
+
+ void nScriptGroupExecute(int i)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnScriptGroupExecute(mContext, i);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nScriptGroupSetInput is deprecated
+ */
+
+ void nScriptGroupSetInput(int i, int j, int k)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnScriptGroupSetInput(mContext, i, j, k);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nScriptGroupSetOutput is deprecated
+ */
+
+ void nScriptGroupSetOutput(int i, int j, int k)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnScriptGroupSetOutput(mContext, i, j, k);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nScriptIntrinsicCreate is deprecated
+ */
+
+ int nScriptIntrinsicCreate(int i, int j)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ int k;
+ validate();
+ k = rsnScriptIntrinsicCreate(mContext, i, j);
+ this;
+ JVM INSTR monitorexit ;
+ return k;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nScriptInvoke is deprecated
+ */
+
+ void nScriptInvoke(int i, int j)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnScriptInvoke(mContext, i, j);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nScriptInvokeV is deprecated
+ */
+
+ void nScriptInvokeV(int i, int j, byte abyte0[])
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnScriptInvokeV(mContext, i, j, abyte0);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nScriptKernelIDCreate is deprecated
+ */
+
+ int nScriptKernelIDCreate(int i, int j, int k)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ int l;
+ validate();
+ l = rsnScriptKernelIDCreate(mContext, i, j, k);
+ this;
+ JVM INSTR monitorexit ;
+ return l;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nScriptSetTimeZone is deprecated
+ */
+
+ void nScriptSetTimeZone(int i, byte abyte0[])
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnScriptSetTimeZone(mContext, i, abyte0);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nScriptSetVarD is deprecated
+ */
+
+ void nScriptSetVarD(int i, int j, double d)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnScriptSetVarD(mContext, i, j, d);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nScriptSetVarF is deprecated
+ */
+
+ void nScriptSetVarF(int i, int j, float f)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnScriptSetVarF(mContext, i, j, f);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nScriptSetVarI is deprecated
+ */
+
+ void nScriptSetVarI(int i, int j, int k)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnScriptSetVarI(mContext, i, j, k);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nScriptSetVarJ is deprecated
+ */
+
+ void nScriptSetVarJ(int i, int j, long l)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnScriptSetVarJ(mContext, i, j, l);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nScriptSetVarObj is deprecated
+ */
+
+ void nScriptSetVarObj(int i, int j, int k)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnScriptSetVarObj(mContext, i, j, k);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nScriptSetVarV is deprecated
+ */
+
+ void nScriptSetVarV(int i, int j, byte abyte0[])
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnScriptSetVarV(mContext, i, j, abyte0);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nScriptSetVarVE is deprecated
+ */
+
+ void nScriptSetVarVE(int i, int j, byte abyte0[], int k, int ai[])
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnScriptSetVarVE(mContext, i, j, abyte0, k, ai);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nTypeCreate is deprecated
+ */
+
+ int nTypeCreate(int i, int j, int k, int l, boolean flag, boolean flag1, int i1)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ int j1;
+ validate();
+ j1 = rsnTypeCreate(mContext, i, j, k, l, flag, flag1, i1);
+ this;
+ JVM INSTR monitorexit ;
+ return j1;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method nTypeGetNativeData is deprecated
+ */
+
+ void nTypeGetNativeData(int i, int ai[])
+ {
+ this;
+ JVM INSTR monitorenter ;
+ validate();
+ rsnTypeGetNativeData(mContext, i, ai);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ native void rsnAllocationCopyFromBitmap(int i, int j, Bitmap bitmap);
+
+ native void rsnAllocationCopyToBitmap(int i, int j, Bitmap bitmap);
+
+ native int rsnAllocationCreateBitmapBackedAllocation(int i, int j, int k, Bitmap bitmap, int l);
+
+ native int rsnAllocationCreateBitmapRef(int i, int j, Bitmap bitmap);
+
+ native int rsnAllocationCreateFromAssetStream(int i, int j, int k, int l);
+
+ native int rsnAllocationCreateFromBitmap(int i, int j, int k, Bitmap bitmap, int l);
+
+ native int rsnAllocationCreateTyped(int i, int j, int k, int l, int i1);
+
+ native int rsnAllocationCubeCreateFromBitmap(int i, int j, int k, Bitmap bitmap, int l);
+
+ native void rsnAllocationData1D(int i, int j, int k, int l, int i1, byte abyte0[], int j1);
+
+ native void rsnAllocationData1D(int i, int j, int k, int l, int i1, float af[], int j1);
+
+ native void rsnAllocationData1D(int i, int j, int k, int l, int i1, int ai[], int j1);
+
+ native void rsnAllocationData1D(int i, int j, int k, int l, int i1, short aword0[], int j1);
+
+ native void rsnAllocationData2D(int i, int j, int k, int l, int i1, int j1, int k1,
+ int l1, int i2, int j2, int k2, int l2, int i3);
+
+ native void rsnAllocationData2D(int i, int j, int k, int l, int i1, int j1, int k1,
+ int l1, byte abyte0[], int i2);
+
+ native void rsnAllocationData2D(int i, int j, int k, int l, int i1, int j1, int k1,
+ int l1, float af[], int i2);
+
+ native void rsnAllocationData2D(int i, int j, int k, int l, int i1, int j1, int k1,
+ int l1, int ai[], int i2);
+
+ native void rsnAllocationData2D(int i, int j, int k, int l, int i1, int j1, int k1,
+ int l1, short aword0[], int i2);
+
+ native void rsnAllocationData2D(int i, int j, int k, int l, int i1, int j1, Bitmap bitmap);
+
+ native void rsnAllocationData3D(int i, int j, int k, int l, int i1, int j1, int k1,
+ int l1, int i2, int j2, int k2, int l2, int i3, int j3);
+
+ native void rsnAllocationData3D(int i, int j, int k, int l, int i1, int j1, int k1,
+ int l1, int i2, byte abyte0[], int j2);
+
+ native void rsnAllocationData3D(int i, int j, int k, int l, int i1, int j1, int k1,
+ int l1, int i2, float af[], int j2);
+
+ native void rsnAllocationData3D(int i, int j, int k, int l, int i1, int j1, int k1,
+ int l1, int i2, int ai[], int j2);
+
+ native void rsnAllocationData3D(int i, int j, int k, int l, int i1, int j1, int k1,
+ int l1, int i2, short aword0[], int j2);
+
+ native void rsnAllocationElementData1D(int i, int j, int k, int l, int i1, byte abyte0[], int j1);
+
+ native void rsnAllocationGenerateMipmaps(int i, int j);
+
+ native int rsnAllocationGetType(int i, int j);
+
+ native void rsnAllocationIoReceive(int i, int j);
+
+ native void rsnAllocationIoSend(int i, int j);
+
+ native void rsnAllocationRead(int i, int j, byte abyte0[]);
+
+ native void rsnAllocationRead(int i, int j, float af[]);
+
+ native void rsnAllocationRead(int i, int j, int ai[]);
+
+ native void rsnAllocationRead(int i, int j, short aword0[]);
+
+ native void rsnAllocationResize1D(int i, int j, int k);
+
+ native void rsnAllocationResize2D(int i, int j, int k, int l);
+
+ native void rsnAllocationSyncAll(int i, int j, int k);
+
+ native int rsnContextCreate(int i, int j, int k, int l);
+
+ native void rsnContextDestroy(int i);
+
+ native void rsnContextDump(int i, int j);
+
+ native void rsnContextFinish(int i);
+
+ native void rsnContextSendMessage(int i, int j, int ai[]);
+
+ native void rsnContextSetPriority(int i, int j);
+
+ native int rsnElementCreate(int i, int j, int k, boolean flag, int l);
+
+ native int rsnElementCreate2(int i, int ai[], String as[], int ai1[]);
+
+ native void rsnElementGetNativeData(int i, int j, int ai[]);
+
+ native void rsnElementGetSubElements(int i, int j, int ai[], String as[], int ai1[]);
+
+ native void rsnObjDestroy(int i, int j);
+
+ native int rsnSamplerCreate(int i, int j, int k, int l, int i1, int j1, float f);
+
+ native void rsnScriptBindAllocation(int i, int j, int k, int l);
+
+ native int rsnScriptCCreate(int i, String s, String s1, byte abyte0[], int j);
+
+ native int rsnScriptFieldIDCreate(int i, int j, int k);
+
+ native void rsnScriptForEach(int i, int j, int k, int l, int i1);
+
+ native void rsnScriptForEach(int i, int j, int k, int l, int i1, byte abyte0[]);
+
+ native void rsnScriptForEachClipped(int i, int j, int k, int l, int i1, int j1, int k1,
+ int l1, int i2, int j2, int k2);
+
+ native void rsnScriptForEachClipped(int i, int j, int k, int l, int i1, byte abyte0[], int j1,
+ int k1, int l1, int i2, int j2, int k2);
+
+ native int rsnScriptGroupCreate(int i, int ai[], int ai1[], int ai2[], int ai3[], int ai4[]);
+
+ native void rsnScriptGroupExecute(int i, int j);
+
+ native void rsnScriptGroupSetInput(int i, int j, int k, int l);
+
+ native void rsnScriptGroupSetOutput(int i, int j, int k, int l);
+
+ native int rsnScriptIntrinsicCreate(int i, int j, int k);
+
+ native void rsnScriptInvoke(int i, int j, int k);
+
+ native void rsnScriptInvokeV(int i, int j, int k, byte abyte0[]);
+
+ native int rsnScriptKernelIDCreate(int i, int j, int k, int l);
+
+ native void rsnScriptSetTimeZone(int i, int j, byte abyte0[]);
+
+ native void rsnScriptSetVarD(int i, int j, int k, double d);
+
+ native void rsnScriptSetVarF(int i, int j, int k, float f);
+
+ native void rsnScriptSetVarI(int i, int j, int k, int l);
+
+ native void rsnScriptSetVarJ(int i, int j, int k, long l);
+
+ native void rsnScriptSetVarObj(int i, int j, int k, int l);
+
+ native void rsnScriptSetVarV(int i, int j, int k, byte abyte0[]);
+
+ native void rsnScriptSetVarVE(int i, int j, int k, byte abyte0[], int l, int ai[]);
+
+ native int rsnTypeCreate(int i, int j, int k, int l, int i1, boolean flag, boolean flag1,
+ int j1);
+
+ native void rsnTypeGetNativeData(int i, int j, int ai[]);
+
+ int safeID(BaseObj baseobj)
+ {
+ int i;
+ if(baseobj != null)
+ i = baseobj.getID(this);
+ else
+ i = 0;
+ return i;
+ }
+
+ public void sendMessage(int i, int ai[])
+ {
+ nContextSendMessage(i, ai);
+ }
+
+ public void setErrorHandler(RSErrorHandler rserrorhandler)
+ {
+ mErrorCallback = rserrorhandler;
+ if(isNative)
+ {
+ RenderScriptThunker renderscriptthunker = (RenderScriptThunker)this;
+ android.renderscript.RSErrorHandler rserrorhandler1 = new android.renderscript.RSErrorHandler() {
+
+ public void run()
+ {
+ mErrorCallback.mErrorMessage = mErrorMessage;
+ mErrorCallback.mErrorNum = mErrorNum;
+ mErrorCallback.run();
+ }
+
+ final RenderScript this$0;
+
+
+ {
+ this$0 = RenderScript.this;
+ super();
+ }
+ }
+;
+ renderscriptthunker.mN.setErrorHandler(rserrorhandler1);
+ }
+ }
+
+ public void setMessageHandler(RSMessageHandler rsmessagehandler)
+ {
+ mMessageCallback = rsmessagehandler;
+ if(isNative)
+ {
+ RenderScriptThunker renderscriptthunker = (RenderScriptThunker)this;
+ android.renderscript.RSMessageHandler rsmessagehandler1 = new android.renderscript.RSMessageHandler() {
+
+ public void run()
+ {
+ mMessageCallback.mData = mData;
+ mMessageCallback.mID = mID;
+ mMessageCallback.mLength = mLength;
+ mMessageCallback.run();
+ }
+
+ final RenderScript this$0;
+
+
+ {
+ this$0 = RenderScript.this;
+ super();
+ }
+ }
+;
+ renderscriptthunker.mN.setMessageHandler(rsmessagehandler1);
+ }
+ }
+
+ public void setPriority(Priority priority)
+ {
+ validate();
+ nContextSetPriority(priority.mID);
+ }
+
+ void validate()
+ {
+ if(mContext == 0)
+ throw new RSInvalidStateException("Calling RS with no Context active.");
+ else
+ return;
+ }
+
+ private static final String CACHE_PATH = "com.android.renderscript.cache";
+ static final boolean DEBUG = false;
+ static final boolean LOG_ENABLED = false;
+ static final String LOG_TAG = "RenderScript_jni";
+ static boolean isNative = false;
+ static Object lock = new Object();
+ static String mCachePath;
+ static Method registerNativeAllocation;
+ static Method registerNativeFree;
+ static boolean sInitialized;
+ static Object sRuntime;
+ static boolean sUseGCHooks;
+ private static int thunk = 0;
+ private Context mApplicationContext;
+ int mContext;
+ int mDev;
+ Element mElement_ALLOCATION;
+ Element mElement_A_8;
+ Element mElement_BOOLEAN;
+ Element mElement_CHAR_2;
+ Element mElement_CHAR_3;
+ Element mElement_CHAR_4;
+ Element mElement_DOUBLE_2;
+ Element mElement_DOUBLE_3;
+ Element mElement_DOUBLE_4;
+ Element mElement_ELEMENT;
+ Element mElement_F32;
+ Element mElement_F64;
+ Element mElement_FLOAT_2;
+ Element mElement_FLOAT_3;
+ Element mElement_FLOAT_4;
+ Element mElement_I16;
+ Element mElement_I32;
+ Element mElement_I64;
+ Element mElement_I8;
+ Element mElement_INT_2;
+ Element mElement_INT_3;
+ Element mElement_INT_4;
+ Element mElement_LONG_2;
+ Element mElement_LONG_3;
+ Element mElement_LONG_4;
+ Element mElement_MATRIX_2X2;
+ Element mElement_MATRIX_3X3;
+ Element mElement_MATRIX_4X4;
+ Element mElement_RGBA_4444;
+ Element mElement_RGBA_5551;
+ Element mElement_RGBA_8888;
+ Element mElement_RGB_565;
+ Element mElement_RGB_888;
+ Element mElement_SAMPLER;
+ Element mElement_SCRIPT;
+ Element mElement_SHORT_2;
+ Element mElement_SHORT_3;
+ Element mElement_SHORT_4;
+ Element mElement_TYPE;
+ Element mElement_U16;
+ Element mElement_U32;
+ Element mElement_U64;
+ Element mElement_U8;
+ Element mElement_UCHAR_2;
+ Element mElement_UCHAR_3;
+ Element mElement_UCHAR_4;
+ Element mElement_UINT_2;
+ Element mElement_UINT_3;
+ Element mElement_UINT_4;
+ Element mElement_ULONG_2;
+ Element mElement_ULONG_3;
+ Element mElement_ULONG_4;
+ Element mElement_USHORT_2;
+ Element mElement_USHORT_3;
+ Element mElement_USHORT_4;
+ RSErrorHandler mErrorCallback;
+ RSMessageHandler mMessageCallback;
+ MessageThread mMessageThread;
+ Sampler mSampler_CLAMP_LINEAR;
+ Sampler mSampler_CLAMP_LINEAR_MIP_LINEAR;
+ Sampler mSampler_CLAMP_NEAREST;
+ Sampler mSampler_MIRRORED_REPEAT_LINEAR;
+ Sampler mSampler_MIRRORED_REPEAT_LINEAR_MIP_LINEAR;
+ Sampler mSampler_MIRRORED_REPEAT_NEAREST;
+ Sampler mSampler_WRAP_LINEAR;
+ Sampler mSampler_WRAP_LINEAR_MIP_LINEAR;
+ Sampler mSampler_WRAP_NEAREST;
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/RenderScriptThunker.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/RenderScriptThunker.java
new file mode 100644
index 0000000..1608cba
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/RenderScriptThunker.java
@@ -0,0 +1,103 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+import android.content.Context;
+import android.renderscript.RSRuntimeException;
+import android.renderscript.RenderScript;
+
+// Referenced classes of package android.support.v8.renderscript:
+// RenderScript, ExceptionThunker, RSInvalidStateException
+
+class RenderScriptThunker extends android.support.v8.renderscript.RenderScript
+{
+
+ RenderScriptThunker(Context context)
+ {
+ super(context);
+ isNative = true;
+ }
+
+ public static android.support.v8.renderscript.RenderScript create(Context context, int i)
+ {
+ RenderScriptThunker renderscriptthunker;
+ try
+ {
+ renderscriptthunker = new RenderScriptThunker(context);
+ renderscriptthunker.mN = RenderScript.create(context, i);
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return renderscriptthunker;
+ }
+
+ public void contextDump()
+ {
+ try
+ {
+ mN.contextDump();
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void destroy()
+ {
+ try
+ {
+ mN.destroy();
+ mN = null;
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void finish()
+ {
+ try
+ {
+ mN.finish();
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void setPriority(RenderScript.Priority priority)
+ {
+ try
+ {
+ if(priority == RenderScript.Priority.LOW)
+ mN.setPriority(android.renderscript.RenderScript.Priority.LOW);
+ if(priority == RenderScript.Priority.NORMAL)
+ mN.setPriority(android.renderscript.RenderScript.Priority.NORMAL);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ void validate()
+ {
+ if(mN == null)
+ throw new RSInvalidStateException("Calling RS with no Context active.");
+ else
+ return;
+ }
+
+ RenderScript mN;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Sampler.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Sampler.java
new file mode 100644
index 0000000..062fed1
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Sampler.java
@@ -0,0 +1,322 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+// Referenced classes of package android.support.v8.renderscript:
+// BaseObj, RenderScript, RenderScriptThunker
+
+public class Sampler extends BaseObj
+{
+ public static class Builder
+ {
+
+ public Sampler create()
+ {
+ RenderScript _tmp = mRS;
+ Sampler sampler;
+ if(RenderScript.isNative)
+ {
+ SamplerThunker.Builder builder = new SamplerThunker.Builder((RenderScriptThunker)mRS);
+ builder.setMinification(mMin);
+ builder.setMagnification(mMag);
+ builder.setWrapS(mWrapS);
+ builder.setWrapT(mWrapT);
+ builder.setAnisotropy(mAniso);
+ sampler = builder.create();
+ } else
+ {
+ mRS.validate();
+ sampler = new Sampler(mRS.nSamplerCreate(mMag.mID, mMin.mID, mWrapS.mID, mWrapT.mID, mWrapR.mID, mAniso), mRS);
+ sampler.mMin = mMin;
+ sampler.mMag = mMag;
+ sampler.mWrapS = mWrapS;
+ sampler.mWrapT = mWrapT;
+ sampler.mWrapR = mWrapR;
+ sampler.mAniso = mAniso;
+ }
+ return sampler;
+ }
+
+ public void setAnisotropy(float f)
+ {
+ if(f >= 0.0F)
+ {
+ mAniso = f;
+ return;
+ } else
+ {
+ throw new IllegalArgumentException("Invalid value");
+ }
+ }
+
+ public void setMagnification(Value value)
+ {
+ if(value == Value.NEAREST || value == Value.LINEAR)
+ {
+ mMag = value;
+ return;
+ } else
+ {
+ throw new IllegalArgumentException("Invalid value");
+ }
+ }
+
+ public void setMinification(Value value)
+ {
+ if(value == Value.NEAREST || value == Value.LINEAR || value == Value.LINEAR_MIP_LINEAR || value == Value.LINEAR_MIP_NEAREST)
+ {
+ mMin = value;
+ return;
+ } else
+ {
+ throw new IllegalArgumentException("Invalid value");
+ }
+ }
+
+ public void setWrapS(Value value)
+ {
+ if(value == Value.WRAP || value == Value.CLAMP || value == Value.MIRRORED_REPEAT)
+ {
+ mWrapS = value;
+ return;
+ } else
+ {
+ throw new IllegalArgumentException("Invalid value");
+ }
+ }
+
+ public void setWrapT(Value value)
+ {
+ if(value == Value.WRAP || value == Value.CLAMP || value == Value.MIRRORED_REPEAT)
+ {
+ mWrapT = value;
+ return;
+ } else
+ {
+ throw new IllegalArgumentException("Invalid value");
+ }
+ }
+
+ float mAniso;
+ Value mMag;
+ Value mMin;
+ RenderScript mRS;
+ Value mWrapR;
+ Value mWrapS;
+ Value mWrapT;
+
+ public Builder(RenderScript renderscript)
+ {
+ mRS = renderscript;
+ mMin = Value.NEAREST;
+ mMag = Value.NEAREST;
+ mWrapS = Value.WRAP;
+ mWrapT = Value.WRAP;
+ mWrapR = Value.WRAP;
+ mAniso = 1.0F;
+ }
+ }
+
+ public static final class Value extends Enum
+ {
+
+ public static Value valueOf(String s)
+ {
+ return (Value)Enum.valueOf(android/support/v8/renderscript/Sampler$Value, s);
+ }
+
+ public static Value[] values()
+ {
+ return (Value[])$VALUES.clone();
+ }
+
+ private static final Value $VALUES[];
+ public static final Value CLAMP;
+ public static final Value LINEAR;
+ public static final Value LINEAR_MIP_LINEAR;
+ public static final Value LINEAR_MIP_NEAREST;
+ public static final Value MIRRORED_REPEAT;
+ public static final Value NEAREST;
+ public static final Value WRAP;
+ int mID;
+
+ static
+ {
+ NEAREST = new Value("NEAREST", 0, 0);
+ LINEAR = new Value("LINEAR", 1, 1);
+ LINEAR_MIP_LINEAR = new Value("LINEAR_MIP_LINEAR", 2, 2);
+ LINEAR_MIP_NEAREST = new Value("LINEAR_MIP_NEAREST", 3, 5);
+ WRAP = new Value("WRAP", 4, 3);
+ CLAMP = new Value("CLAMP", 5, 4);
+ MIRRORED_REPEAT = new Value("MIRRORED_REPEAT", 6, 6);
+ Value avalue[] = new Value[7];
+ avalue[0] = NEAREST;
+ avalue[1] = LINEAR;
+ avalue[2] = LINEAR_MIP_LINEAR;
+ avalue[3] = LINEAR_MIP_NEAREST;
+ avalue[4] = WRAP;
+ avalue[5] = CLAMP;
+ avalue[6] = MIRRORED_REPEAT;
+ $VALUES = avalue;
+ }
+
+ private Value(String s, int i, int j)
+ {
+ super(s, i);
+ mID = j;
+ }
+ }
+
+
+ Sampler(int i, RenderScript renderscript)
+ {
+ super(i, renderscript);
+ }
+
+ public static Sampler CLAMP_LINEAR(RenderScript renderscript)
+ {
+ if(renderscript.mSampler_CLAMP_LINEAR == null)
+ {
+ Builder builder = new Builder(renderscript);
+ builder.setMinification(Value.LINEAR);
+ builder.setMagnification(Value.LINEAR);
+ builder.setWrapS(Value.CLAMP);
+ builder.setWrapT(Value.CLAMP);
+ renderscript.mSampler_CLAMP_LINEAR = builder.create();
+ }
+ return renderscript.mSampler_CLAMP_LINEAR;
+ }
+
+ public static Sampler CLAMP_LINEAR_MIP_LINEAR(RenderScript renderscript)
+ {
+ if(renderscript.mSampler_CLAMP_LINEAR_MIP_LINEAR == null)
+ {
+ Builder builder = new Builder(renderscript);
+ builder.setMinification(Value.LINEAR_MIP_LINEAR);
+ builder.setMagnification(Value.LINEAR);
+ builder.setWrapS(Value.CLAMP);
+ builder.setWrapT(Value.CLAMP);
+ renderscript.mSampler_CLAMP_LINEAR_MIP_LINEAR = builder.create();
+ }
+ return renderscript.mSampler_CLAMP_LINEAR_MIP_LINEAR;
+ }
+
+ public static Sampler CLAMP_NEAREST(RenderScript renderscript)
+ {
+ if(renderscript.mSampler_CLAMP_NEAREST == null)
+ {
+ Builder builder = new Builder(renderscript);
+ builder.setMinification(Value.NEAREST);
+ builder.setMagnification(Value.NEAREST);
+ builder.setWrapS(Value.CLAMP);
+ builder.setWrapT(Value.CLAMP);
+ renderscript.mSampler_CLAMP_NEAREST = builder.create();
+ }
+ return renderscript.mSampler_CLAMP_NEAREST;
+ }
+
+ public static Sampler MIRRORED_REPEAT_LINEAR(RenderScript renderscript)
+ {
+ if(renderscript.mSampler_MIRRORED_REPEAT_LINEAR == null)
+ {
+ Builder builder = new Builder(renderscript);
+ builder.setMinification(Value.LINEAR);
+ builder.setMagnification(Value.LINEAR);
+ builder.setWrapS(Value.MIRRORED_REPEAT);
+ builder.setWrapT(Value.MIRRORED_REPEAT);
+ renderscript.mSampler_MIRRORED_REPEAT_LINEAR = builder.create();
+ }
+ return renderscript.mSampler_MIRRORED_REPEAT_LINEAR;
+ }
+
+ public static Sampler MIRRORED_REPEAT_NEAREST(RenderScript renderscript)
+ {
+ if(renderscript.mSampler_MIRRORED_REPEAT_NEAREST == null)
+ {
+ Builder builder = new Builder(renderscript);
+ builder.setMinification(Value.NEAREST);
+ builder.setMagnification(Value.NEAREST);
+ builder.setWrapS(Value.MIRRORED_REPEAT);
+ builder.setWrapT(Value.MIRRORED_REPEAT);
+ renderscript.mSampler_MIRRORED_REPEAT_NEAREST = builder.create();
+ }
+ return renderscript.mSampler_MIRRORED_REPEAT_NEAREST;
+ }
+
+ public static Sampler WRAP_LINEAR(RenderScript renderscript)
+ {
+ if(renderscript.mSampler_WRAP_LINEAR == null)
+ {
+ Builder builder = new Builder(renderscript);
+ builder.setMinification(Value.LINEAR);
+ builder.setMagnification(Value.LINEAR);
+ builder.setWrapS(Value.WRAP);
+ builder.setWrapT(Value.WRAP);
+ renderscript.mSampler_WRAP_LINEAR = builder.create();
+ }
+ return renderscript.mSampler_WRAP_LINEAR;
+ }
+
+ public static Sampler WRAP_LINEAR_MIP_LINEAR(RenderScript renderscript)
+ {
+ if(renderscript.mSampler_WRAP_LINEAR_MIP_LINEAR == null)
+ {
+ Builder builder = new Builder(renderscript);
+ builder.setMinification(Value.LINEAR_MIP_LINEAR);
+ builder.setMagnification(Value.LINEAR);
+ builder.setWrapS(Value.WRAP);
+ builder.setWrapT(Value.WRAP);
+ renderscript.mSampler_WRAP_LINEAR_MIP_LINEAR = builder.create();
+ }
+ return renderscript.mSampler_WRAP_LINEAR_MIP_LINEAR;
+ }
+
+ public static Sampler WRAP_NEAREST(RenderScript renderscript)
+ {
+ if(renderscript.mSampler_WRAP_NEAREST == null)
+ {
+ Builder builder = new Builder(renderscript);
+ builder.setMinification(Value.NEAREST);
+ builder.setMagnification(Value.NEAREST);
+ builder.setWrapS(Value.WRAP);
+ builder.setWrapT(Value.WRAP);
+ renderscript.mSampler_WRAP_NEAREST = builder.create();
+ }
+ return renderscript.mSampler_WRAP_NEAREST;
+ }
+
+ public float getAnisotropy()
+ {
+ return mAniso;
+ }
+
+ public Value getMagnification()
+ {
+ return mMag;
+ }
+
+ public Value getMinification()
+ {
+ return mMin;
+ }
+
+ public Value getWrapS()
+ {
+ return mWrapS;
+ }
+
+ public Value getWrapT()
+ {
+ return mWrapT;
+ }
+
+ float mAniso;
+ Value mMag;
+ Value mMin;
+ Value mWrapR;
+ Value mWrapS;
+ Value mWrapT;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/SamplerThunker.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/SamplerThunker.java
new file mode 100644
index 0000000..568297a
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/SamplerThunker.java
@@ -0,0 +1,225 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+import android.renderscript.*;
+
+// Referenced classes of package android.support.v8.renderscript:
+// Sampler, RenderScript, RenderScriptThunker, ExceptionThunker
+
+class SamplerThunker extends android.support.v8.renderscript.Sampler
+{
+ public static class Builder
+ {
+
+ public android.support.v8.renderscript.Sampler create()
+ {
+ mRS.validate();
+ SamplerThunker samplerthunker;
+ try
+ {
+ android.renderscript.Sampler.Builder builder = new android.renderscript.Sampler.Builder(mRS.mN);
+ builder.setMinification(SamplerThunker.convertValue(mMin));
+ builder.setMagnification(SamplerThunker.convertValue(mMag));
+ builder.setWrapS(SamplerThunker.convertValue(mWrapS));
+ builder.setWrapT(SamplerThunker.convertValue(mWrapT));
+ builder.setAnisotropy(mAniso);
+ Sampler sampler = builder.create();
+ samplerthunker = new SamplerThunker(0, mRS);
+ samplerthunker.mMin = mMin;
+ samplerthunker.mMag = mMag;
+ samplerthunker.mWrapS = mWrapS;
+ samplerthunker.mWrapT = mWrapT;
+ samplerthunker.mWrapR = mWrapR;
+ samplerthunker.mAniso = mAniso;
+ samplerthunker.mN = sampler;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return samplerthunker;
+ }
+
+ public void setAnisotropy(float f)
+ {
+ if(f >= 0.0F)
+ {
+ mAniso = f;
+ return;
+ } else
+ {
+ throw new IllegalArgumentException("Invalid value");
+ }
+ }
+
+ public void setMagnification(Sampler.Value value)
+ {
+ if(value == Sampler.Value.NEAREST || value == Sampler.Value.LINEAR)
+ {
+ mMag = value;
+ return;
+ } else
+ {
+ throw new IllegalArgumentException("Invalid value");
+ }
+ }
+
+ public void setMinification(Sampler.Value value)
+ {
+ if(value == Sampler.Value.NEAREST || value == Sampler.Value.LINEAR || value == Sampler.Value.LINEAR_MIP_LINEAR || value == Sampler.Value.LINEAR_MIP_NEAREST)
+ {
+ mMin = value;
+ return;
+ } else
+ {
+ throw new IllegalArgumentException("Invalid value");
+ }
+ }
+
+ public void setWrapS(Sampler.Value value)
+ {
+ if(value == Sampler.Value.WRAP || value == Sampler.Value.CLAMP || value == Sampler.Value.MIRRORED_REPEAT)
+ {
+ mWrapS = value;
+ return;
+ } else
+ {
+ throw new IllegalArgumentException("Invalid value");
+ }
+ }
+
+ public void setWrapT(Sampler.Value value)
+ {
+ if(value == Sampler.Value.WRAP || value == Sampler.Value.CLAMP || value == Sampler.Value.MIRRORED_REPEAT)
+ {
+ mWrapT = value;
+ return;
+ } else
+ {
+ throw new IllegalArgumentException("Invalid value");
+ }
+ }
+
+ float mAniso;
+ Sampler.Value mMag;
+ Sampler.Value mMin;
+ RenderScriptThunker mRS;
+ Sampler.Value mWrapR;
+ Sampler.Value mWrapS;
+ Sampler.Value mWrapT;
+
+ public Builder(RenderScriptThunker renderscriptthunker)
+ {
+ mRS = renderscriptthunker;
+ mMin = Sampler.Value.NEAREST;
+ mMag = Sampler.Value.NEAREST;
+ mWrapS = Sampler.Value.WRAP;
+ mWrapT = Sampler.Value.WRAP;
+ mWrapR = Sampler.Value.WRAP;
+ }
+ }
+
+
+ protected SamplerThunker(int i, RenderScript renderscript)
+ {
+ super(i, renderscript);
+ }
+
+ static android.renderscript.Sampler.Value convertValue(Sampler.Value value)
+ {
+ class _cls1
+ {
+
+ static final int $SwitchMap$android$support$v8$renderscript$Sampler$Value[];
+
+ static
+ {
+ $SwitchMap$android$support$v8$renderscript$Sampler$Value = new int[Sampler.Value.values().length];
+ NoSuchFieldError nosuchfielderror6;
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Sampler$Value[Sampler.Value.NEAREST.ordinal()] = 1;
+ }
+ catch(NoSuchFieldError nosuchfielderror) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Sampler$Value[Sampler.Value.LINEAR.ordinal()] = 2;
+ }
+ catch(NoSuchFieldError nosuchfielderror1) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Sampler$Value[Sampler.Value.LINEAR_MIP_LINEAR.ordinal()] = 3;
+ }
+ catch(NoSuchFieldError nosuchfielderror2) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Sampler$Value[Sampler.Value.LINEAR_MIP_NEAREST.ordinal()] = 4;
+ }
+ catch(NoSuchFieldError nosuchfielderror3) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Sampler$Value[Sampler.Value.WRAP.ordinal()] = 5;
+ }
+ catch(NoSuchFieldError nosuchfielderror4) { }
+ try
+ {
+ $SwitchMap$android$support$v8$renderscript$Sampler$Value[Sampler.Value.CLAMP.ordinal()] = 6;
+ }
+ catch(NoSuchFieldError nosuchfielderror5) { }
+ $SwitchMap$android$support$v8$renderscript$Sampler$Value[Sampler.Value.MIRRORED_REPEAT.ordinal()] = 7;
+_L2:
+ return;
+ nosuchfielderror6;
+ if(true) goto _L2; else goto _L1
+_L1:
+ }
+ }
+
+ _cls1..SwitchMap.android.support.v8.renderscript.Sampler.Value[value.ordinal()];
+ JVM INSTR tableswitch 1 7: default 52
+ // 1 56
+ // 2 63
+ // 3 70
+ // 4 77
+ // 5 84
+ // 6 91
+ // 7 98;
+ goto _L1 _L2 _L3 _L4 _L5 _L6 _L7 _L8
+_L1:
+ android.renderscript.Sampler.Value value1 = null;
+_L10:
+ return value1;
+_L2:
+ value1 = android.renderscript.Sampler.Value.NEAREST;
+ continue; /* Loop/switch isn't completed */
+_L3:
+ value1 = android.renderscript.Sampler.Value.LINEAR;
+ continue; /* Loop/switch isn't completed */
+_L4:
+ value1 = android.renderscript.Sampler.Value.LINEAR_MIP_LINEAR;
+ continue; /* Loop/switch isn't completed */
+_L5:
+ value1 = android.renderscript.Sampler.Value.LINEAR_MIP_NEAREST;
+ continue; /* Loop/switch isn't completed */
+_L6:
+ value1 = android.renderscript.Sampler.Value.WRAP;
+ continue; /* Loop/switch isn't completed */
+_L7:
+ value1 = android.renderscript.Sampler.Value.CLAMP;
+ continue; /* Loop/switch isn't completed */
+_L8:
+ value1 = android.renderscript.Sampler.Value.MIRRORED_REPEAT;
+ if(true) goto _L10; else goto _L9
+_L9:
+ }
+
+ BaseObj getNObj()
+ {
+ return mN;
+ }
+
+ Sampler mN;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Script.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Script.java
new file mode 100644
index 0000000..c0705fc
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Script.java
@@ -0,0 +1,464 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+import android.renderscript.BaseObj;
+import android.util.SparseArray;
+import java.io.UnsupportedEncodingException;
+
+// Referenced classes of package android.support.v8.renderscript:
+// BaseObj, ScriptCThunker, RenderScript, Allocation,
+// RSDriverException, RSIllegalArgumentException, FieldPacker, Element,
+// Type
+
+public class Script extends android.support.v8.renderscript.BaseObj
+{
+ public static final class LaunchOptions
+ {
+
+ public int getXEnd()
+ {
+ return xend;
+ }
+
+ public int getXStart()
+ {
+ return xstart;
+ }
+
+ public int getYEnd()
+ {
+ return yend;
+ }
+
+ public int getYStart()
+ {
+ return ystart;
+ }
+
+ public int getZEnd()
+ {
+ return zend;
+ }
+
+ public int getZStart()
+ {
+ return zstart;
+ }
+
+ public LaunchOptions setX(int i, int j)
+ {
+ if(i < 0 || j <= i)
+ {
+ throw new RSIllegalArgumentException("Invalid dimensions");
+ } else
+ {
+ xstart = i;
+ xend = j;
+ return this;
+ }
+ }
+
+ public LaunchOptions setY(int i, int j)
+ {
+ if(i < 0 || j <= i)
+ {
+ throw new RSIllegalArgumentException("Invalid dimensions");
+ } else
+ {
+ ystart = i;
+ yend = j;
+ return this;
+ }
+ }
+
+ public LaunchOptions setZ(int i, int j)
+ {
+ if(i < 0 || j <= i)
+ {
+ throw new RSIllegalArgumentException("Invalid dimensions");
+ } else
+ {
+ zstart = i;
+ zend = j;
+ return this;
+ }
+ }
+
+ private int strategy;
+ private int xend;
+ private int xstart;
+ private int yend;
+ private int ystart;
+ private int zend;
+ private int zstart;
+
+
+
+
+
+
+
+ public LaunchOptions()
+ {
+ xstart = 0;
+ ystart = 0;
+ xend = 0;
+ yend = 0;
+ zstart = 0;
+ zend = 0;
+ }
+ }
+
+ public static class FieldBase
+ {
+
+ public Allocation getAllocation()
+ {
+ return mAllocation;
+ }
+
+ public Element getElement()
+ {
+ return mElement;
+ }
+
+ public Type getType()
+ {
+ return mAllocation.getType();
+ }
+
+ protected void init(RenderScript renderscript, int i)
+ {
+ mAllocation = Allocation.createSized(renderscript, mElement, i, 1);
+ }
+
+ protected void init(RenderScript renderscript, int i, int j)
+ {
+ mAllocation = Allocation.createSized(renderscript, mElement, i, j | 1);
+ }
+
+ public void updateAllocation()
+ {
+ }
+
+ protected Allocation mAllocation;
+ protected Element mElement;
+
+ protected FieldBase()
+ {
+ }
+ }
+
+ public static class Builder
+ {
+
+ RenderScript mRS;
+
+ Builder(RenderScript renderscript)
+ {
+ mRS = renderscript;
+ }
+ }
+
+ public static final class FieldID extends android.support.v8.renderscript.BaseObj
+ {
+
+ android.renderscript.FieldID mN;
+ Script mScript;
+ int mSlot;
+
+ FieldID(int i, RenderScript renderscript, Script script, int j)
+ {
+ super(i, renderscript);
+ mScript = script;
+ mSlot = j;
+ }
+ }
+
+ public static final class KernelID extends android.support.v8.renderscript.BaseObj
+ {
+
+ android.renderscript.KernelID mN;
+ Script mScript;
+ int mSig;
+ int mSlot;
+
+ KernelID(int i, RenderScript renderscript, Script script, int j, int k)
+ {
+ super(i, renderscript);
+ mScript = script;
+ mSlot = j;
+ mSig = k;
+ }
+ }
+
+
+ Script(int i, RenderScript renderscript)
+ {
+ super(i, renderscript);
+ }
+
+ public void bindAllocation(Allocation allocation, int i)
+ {
+ if(mT != null)
+ {
+ mT.thunkBindAllocation(allocation, i);
+ } else
+ {
+ mRS.validate();
+ if(allocation != null)
+ mRS.nScriptBindAllocation(getID(mRS), allocation.getID(mRS), i);
+ else
+ mRS.nScriptBindAllocation(getID(mRS), 0, i);
+ }
+ }
+
+ protected FieldID createFieldID(int i, Element element)
+ {
+ RenderScript _tmp = mRS;
+ FieldID fieldid1;
+ if(RenderScript.isNative)
+ {
+ FieldID fieldid = new FieldID(0, mRS, this, i);
+ if(mT != null)
+ fieldid.mN = mT.thunkCreateFieldID(i, element);
+ mFIDs.put(i, fieldid);
+ fieldid1 = fieldid;
+ } else
+ {
+ FieldID fieldid2 = (FieldID)mFIDs.get(i);
+ if(fieldid2 != null)
+ {
+ fieldid1 = fieldid2;
+ } else
+ {
+ int j = mRS.nScriptFieldIDCreate(getID(mRS), i);
+ if(j == 0)
+ throw new RSDriverException("Failed to create FieldID");
+ FieldID fieldid3 = new FieldID(j, mRS, this, i);
+ mFIDs.put(i, fieldid3);
+ fieldid1 = fieldid3;
+ }
+ }
+ return fieldid1;
+ }
+
+ protected KernelID createKernelID(int i, int j, Element element, Element element1)
+ {
+ KernelID kernelid = (KernelID)mKIDs.get(i);
+ KernelID kernelid2;
+ if(kernelid != null)
+ {
+ kernelid2 = kernelid;
+ } else
+ {
+ RenderScript _tmp = mRS;
+ if(RenderScript.isNative)
+ {
+ KernelID kernelid1 = new KernelID(0, mRS, this, i, j);
+ if(mT != null)
+ kernelid1.mN = mT.thunkCreateKernelID(i, j, element, element1);
+ mKIDs.put(i, kernelid1);
+ kernelid2 = kernelid1;
+ } else
+ {
+ int k = mRS.nScriptKernelIDCreate(getID(mRS), i, j);
+ if(k == 0)
+ throw new RSDriverException("Failed to create KernelID");
+ KernelID kernelid3 = new KernelID(k, mRS, this, i, j);
+ mKIDs.put(i, kernelid3);
+ kernelid2 = kernelid3;
+ }
+ }
+ return kernelid2;
+ }
+
+ protected void forEach(int i, Allocation allocation, Allocation allocation1, FieldPacker fieldpacker)
+ {
+ if(mT != null)
+ {
+ mT.thunkForEach(i, allocation, allocation1, fieldpacker);
+ } else
+ {
+ if(allocation == null && allocation1 == null)
+ throw new RSIllegalArgumentException("At least one of ain or aout is required to be non-null.");
+ int j = 0;
+ if(allocation != null)
+ j = allocation.getID(mRS);
+ int k = 0;
+ if(allocation1 != null)
+ k = allocation1.getID(mRS);
+ byte abyte0[] = null;
+ if(fieldpacker != null)
+ abyte0 = fieldpacker.getData();
+ mRS.nScriptForEach(getID(mRS), i, j, k, abyte0);
+ }
+ }
+
+ protected void forEach(int i, Allocation allocation, Allocation allocation1, FieldPacker fieldpacker, LaunchOptions launchoptions)
+ {
+ if(mT != null)
+ {
+ mT.thunkForEach(i, allocation, allocation1, fieldpacker, launchoptions);
+ } else
+ {
+ if(allocation == null && allocation1 == null)
+ throw new RSIllegalArgumentException("At least one of ain or aout is required to be non-null.");
+ if(launchoptions == null)
+ {
+ forEach(i, allocation, allocation1, fieldpacker);
+ } else
+ {
+ int j = 0;
+ if(allocation != null)
+ j = allocation.getID(mRS);
+ int k = 0;
+ if(allocation1 != null)
+ k = allocation1.getID(mRS);
+ byte abyte0[] = null;
+ if(fieldpacker != null)
+ abyte0 = fieldpacker.getData();
+ mRS.nScriptForEachClipped(getID(mRS), i, j, k, abyte0, launchoptions.xstart, launchoptions.xend, launchoptions.ystart, launchoptions.yend, launchoptions.zstart, launchoptions.zend);
+ }
+ }
+ }
+
+ volatile BaseObj getNObj()
+ {
+ return getNObj();
+ }
+
+ android.renderscript.Script getNObj()
+ {
+ return mT;
+ }
+
+ protected void invoke(int i)
+ {
+ if(mT != null)
+ mT.thunkInvoke(i);
+ else
+ mRS.nScriptInvoke(getID(mRS), i);
+ }
+
+ protected void invoke(int i, FieldPacker fieldpacker)
+ {
+ if(mT != null)
+ mT.thunkInvoke(i, fieldpacker);
+ else
+ if(fieldpacker != null)
+ mRS.nScriptInvokeV(getID(mRS), i, fieldpacker.getData());
+ else
+ mRS.nScriptInvoke(getID(mRS), i);
+ }
+
+ public void setTimeZone(String s)
+ {
+ if(mT != null)
+ {
+ mT.thunkSetTimeZone(s);
+ } else
+ {
+ mRS.validate();
+ try
+ {
+ mRS.nScriptSetTimeZone(getID(mRS), s.getBytes("UTF-8"));
+ }
+ catch(UnsupportedEncodingException unsupportedencodingexception)
+ {
+ throw new RuntimeException(unsupportedencodingexception);
+ }
+ }
+ }
+
+ public void setVar(int i, double d)
+ {
+ if(mT != null)
+ mT.thunkSetVar(i, d);
+ else
+ mRS.nScriptSetVarD(getID(mRS), i, d);
+ }
+
+ public void setVar(int i, float f)
+ {
+ if(mT != null)
+ mT.thunkSetVar(i, f);
+ else
+ mRS.nScriptSetVarF(getID(mRS), i, f);
+ }
+
+ public void setVar(int i, int j)
+ {
+ if(mT != null)
+ mT.thunkSetVar(i, j);
+ else
+ mRS.nScriptSetVarI(getID(mRS), i, j);
+ }
+
+ public void setVar(int i, long l)
+ {
+ if(mT != null)
+ mT.thunkSetVar(i, l);
+ else
+ mRS.nScriptSetVarJ(getID(mRS), i, l);
+ }
+
+ public void setVar(int i, android.support.v8.renderscript.BaseObj baseobj)
+ {
+ if(mT != null)
+ {
+ mT.thunkSetVar(i, baseobj);
+ } else
+ {
+ RenderScript renderscript = mRS;
+ int j = getID(mRS);
+ int k;
+ if(baseobj == null)
+ k = 0;
+ else
+ k = baseobj.getID(mRS);
+ renderscript.nScriptSetVarObj(j, i, k);
+ }
+ }
+
+ public void setVar(int i, FieldPacker fieldpacker)
+ {
+ if(mT != null)
+ mT.thunkSetVar(i, fieldpacker);
+ else
+ mRS.nScriptSetVarV(getID(mRS), i, fieldpacker.getData());
+ }
+
+ public void setVar(int i, FieldPacker fieldpacker, Element element, int ai[])
+ {
+ if(mT != null)
+ mT.thunkSetVar(i, fieldpacker, element, ai);
+ else
+ mRS.nScriptSetVarVE(getID(mRS), i, fieldpacker.getData(), element.getID(mRS), ai);
+ }
+
+ public void setVar(int i, boolean flag)
+ {
+ if(mT != null)
+ {
+ mT.thunkSetVar(i, flag);
+ } else
+ {
+ RenderScript renderscript = mRS;
+ int j = getID(mRS);
+ int k;
+ if(flag)
+ k = 1;
+ else
+ k = 0;
+ renderscript.nScriptSetVarI(j, i, k);
+ }
+ }
+
+ private final SparseArray mFIDs = new SparseArray();
+ private final SparseArray mKIDs = new SparseArray();
+ ScriptCThunker mT;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptC.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptC.java
new file mode 100644
index 0000000..7480a87
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptC.java
@@ -0,0 +1,88 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+import android.content.Context;
+import android.content.res.Resources;
+import java.io.*;
+
+// Referenced classes of package android.support.v8.renderscript:
+// Script, RenderScript, ScriptCThunker, RenderScriptThunker,
+// RSRuntimeException
+
+public class ScriptC extends Script
+{
+
+ protected ScriptC(int i, RenderScript renderscript)
+ {
+ super(i, renderscript);
+ }
+
+ protected ScriptC(RenderScript renderscript, Resources resources, int i)
+ {
+ super(0, renderscript);
+ if(RenderScript.isNative)
+ {
+ mT = new ScriptCThunker((RenderScriptThunker)renderscript, resources, i);
+ } else
+ {
+ int j = internalCreate(renderscript, resources, i);
+ if(j == 0)
+ throw new RSRuntimeException("Loading of ScriptC script failed.");
+ setID(j);
+ }
+ }
+
+ /**
+ * @deprecated Method internalCreate is deprecated
+ */
+
+ private static int internalCreate(RenderScript renderscript, Resources resources, int i)
+ {
+ android/support/v8/renderscript/ScriptC;
+ JVM INSTR monitorenter ;
+ InputStream inputstream = resources.openRawResource(i);
+ byte abyte0[];
+ int j;
+ abyte0 = new byte[1024];
+ j = 0;
+_L1:
+ int l;
+ int k = abyte0.length - j;
+ if(k == 0)
+ {
+ byte abyte1[] = new byte[2 * abyte0.length];
+ System.arraycopy(abyte0, 0, abyte1, 0, abyte0.length);
+ abyte0 = abyte1;
+ k = abyte0.length - j;
+ }
+ l = inputstream.read(abyte0, j, k);
+ if(l > 0)
+ break MISSING_BLOCK_LABEL_120;
+ inputstream.close();
+ int i1 = renderscript.nScriptCCreate(resources.getResourceEntryName(i), renderscript.getApplicationContext().getCacheDir().toString(), abyte0, j);
+ android/support/v8/renderscript/ScriptC;
+ JVM INSTR monitorexit ;
+ return i1;
+ j += l;
+ goto _L1
+ Exception exception1;
+ exception1;
+ try
+ {
+ inputstream.close();
+ throw exception1;
+ }
+ catch(IOException ioexception) { }
+ throw new android.content.res.Resources.NotFoundException();
+ Exception exception;
+ exception;
+ android/support/v8/renderscript/ScriptC;
+ JVM INSTR monitorexit ;
+ throw exception;
+ }
+
+ private static final String TAG = "ScriptC";
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptCThunker.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptCThunker.java
new file mode 100644
index 0000000..ba03e91
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptCThunker.java
@@ -0,0 +1,284 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+import android.content.res.Resources;
+import android.renderscript.*;
+
+// Referenced classes of package android.support.v8.renderscript:
+// RenderScriptThunker, AllocationThunker, ExceptionThunker, ElementThunker,
+// FieldPacker, BaseObj, Allocation, Element
+
+class ScriptCThunker extends ScriptC
+{
+
+ protected ScriptCThunker(RenderScriptThunker renderscriptthunker, Resources resources, int i)
+ {
+ super(renderscriptthunker.mN, resources, i);
+ }
+
+ void thunkBindAllocation(Allocation allocation, int i)
+ {
+ android.renderscript.Allocation allocation1 = null;
+ if(allocation != null)
+ allocation1 = ((AllocationThunker)allocation).mN;
+ try
+ {
+ bindAllocation(allocation1, i);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ android.renderscript.Script.FieldID thunkCreateFieldID(int i, Element element)
+ {
+ android.renderscript.Script.FieldID fieldid;
+ try
+ {
+ fieldid = createFieldID(i, ((ElementThunker)element).getNObj());
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return fieldid;
+ }
+
+ android.renderscript.Script.KernelID thunkCreateKernelID(int i, int j, Element element, Element element1)
+ {
+ android.renderscript.Element element2 = null;
+ android.renderscript.Element element3 = null;
+ if(element != null)
+ element2 = ((ElementThunker)element).mN;
+ if(element1 != null)
+ element3 = ((ElementThunker)element1).mN;
+ android.renderscript.Script.KernelID kernelid;
+ try
+ {
+ kernelid = createKernelID(i, j, element2, element3);
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return kernelid;
+ }
+
+ void thunkForEach(int i, Allocation allocation, Allocation allocation1, android.support.v8.renderscript.FieldPacker fieldpacker)
+ {
+ android.renderscript.Allocation allocation2;
+ android.renderscript.Allocation allocation3;
+ FieldPacker fieldpacker1;
+ allocation2 = null;
+ allocation3 = null;
+ fieldpacker1 = null;
+ if(allocation != null)
+ allocation2 = ((AllocationThunker)allocation).mN;
+ if(allocation1 != null)
+ allocation3 = ((AllocationThunker)allocation1).mN;
+ if(fieldpacker == null)
+ break MISSING_BLOCK_LABEL_54;
+ fieldpacker1 = new FieldPacker(fieldpacker.getData());
+ forEach(i, allocation2, allocation3, fieldpacker1);
+ return;
+ RSRuntimeException rsruntimeexception;
+ rsruntimeexception;
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+
+ void thunkForEach(int i, Allocation allocation, Allocation allocation1, android.support.v8.renderscript.FieldPacker fieldpacker, Script.LaunchOptions launchoptions)
+ {
+ android.renderscript.Script.LaunchOptions launchoptions1;
+ launchoptions1 = null;
+ if(launchoptions == null)
+ break MISSING_BLOCK_LABEL_93;
+ android.renderscript.Script.LaunchOptions launchoptions2 = new android.renderscript.Script.LaunchOptions();
+ if(launchoptions.getXEnd() > 0)
+ launchoptions2.setX(launchoptions.getXStart(), launchoptions.getXEnd());
+ if(launchoptions.getYEnd() > 0)
+ launchoptions2.setY(launchoptions.getYStart(), launchoptions.getYEnd());
+ if(launchoptions.getZEnd() > 0)
+ launchoptions2.setZ(launchoptions.getZStart(), launchoptions.getZEnd());
+ launchoptions1 = launchoptions2;
+ android.renderscript.Allocation allocation2;
+ android.renderscript.Allocation allocation3;
+ FieldPacker fieldpacker1;
+ allocation2 = null;
+ allocation3 = null;
+ fieldpacker1 = null;
+ if(allocation == null)
+ break MISSING_BLOCK_LABEL_115;
+ allocation2 = ((AllocationThunker)allocation).mN;
+ if(allocation1 != null)
+ allocation3 = ((AllocationThunker)allocation1).mN;
+ if(fieldpacker != null)
+ fieldpacker1 = new FieldPacker(fieldpacker.getData());
+ forEach(i, allocation2, allocation3, fieldpacker1, launchoptions1);
+ return;
+ RSRuntimeException rsruntimeexception;
+ rsruntimeexception;
+_L2:
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ rsruntimeexception;
+ if(true) goto _L2; else goto _L1
+_L1:
+ }
+
+ void thunkInvoke(int i)
+ {
+ try
+ {
+ invoke(i);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ void thunkInvoke(int i, android.support.v8.renderscript.FieldPacker fieldpacker)
+ {
+ try
+ {
+ invoke(i, new FieldPacker(fieldpacker.getData()));
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ void thunkSetTimeZone(String s)
+ {
+ try
+ {
+ setTimeZone(s);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ void thunkSetVar(int i, double d)
+ {
+ try
+ {
+ setVar(i, d);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ void thunkSetVar(int i, float f)
+ {
+ try
+ {
+ setVar(i, f);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ void thunkSetVar(int i, int j)
+ {
+ try
+ {
+ setVar(i, j);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ void thunkSetVar(int i, long l)
+ {
+ try
+ {
+ setVar(i, l);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ void thunkSetVar(int i, BaseObj baseobj)
+ {
+ if(baseobj != null)
+ break MISSING_BLOCK_LABEL_19;
+ setVar(i, 0);
+_L1:
+ return;
+ RSRuntimeException rsruntimeexception1;
+ rsruntimeexception1;
+ throw ExceptionThunker.convertException(rsruntimeexception1);
+ try
+ {
+ setVar(i, baseobj.getNObj());
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ goto _L1
+ }
+
+ void thunkSetVar(int i, android.support.v8.renderscript.FieldPacker fieldpacker)
+ {
+ try
+ {
+ setVar(i, new FieldPacker(fieldpacker.getData()));
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ void thunkSetVar(int i, android.support.v8.renderscript.FieldPacker fieldpacker, Element element, int ai[])
+ {
+ try
+ {
+ setVar(i, new FieldPacker(fieldpacker.getData()), ((ElementThunker)element).mN, ai);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ void thunkSetVar(int i, boolean flag)
+ {
+ try
+ {
+ setVar(i, flag);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ private static final String TAG = "ScriptC";
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptGroup.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptGroup.java
new file mode 100644
index 0000000..52a2ddc
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptGroup.java
@@ -0,0 +1,395 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+import java.util.ArrayList;
+
+// Referenced classes of package android.support.v8.renderscript:
+// BaseObj, RenderScript, RSIllegalArgumentException, Allocation,
+// RSInvalidStateException, RSRuntimeException, Type, Script
+
+public class ScriptGroup extends BaseObj
+{
+ public static final class Builder
+ {
+
+ private Node findNode(Script.KernelID kernelid)
+ {
+ int i = 0;
+_L6:
+ Node node;
+ int j;
+ if(i >= mNodes.size())
+ break MISSING_BLOCK_LABEL_67;
+ node = (Node)mNodes.get(i);
+ j = 0;
+_L5:
+ if(j >= node.mKernels.size()) goto _L2; else goto _L1
+_L1:
+ if(kernelid != node.mKernels.get(j)) goto _L4; else goto _L3
+_L3:
+ return node;
+_L4:
+ j++;
+ goto _L5
+_L2:
+ i++;
+ goto _L6
+ node = null;
+ goto _L3
+ }
+
+ private Node findNode(Script script)
+ {
+ int i = 0;
+_L3:
+ if(i >= mNodes.size())
+ break MISSING_BLOCK_LABEL_51;
+ if(script != ((Node)mNodes.get(i)).mScript) goto _L2; else goto _L1
+_L1:
+ Node node = (Node)mNodes.get(i);
+_L4:
+ return node;
+_L2:
+ i++;
+ goto _L3
+ node = null;
+ goto _L4
+ }
+
+ private void mergeDAGs(int i, int j)
+ {
+ for(int k = 0; k < mNodes.size(); k++)
+ if(((Node)mNodes.get(k)).dagNumber == j)
+ ((Node)mNodes.get(k)).dagNumber = i;
+
+ }
+
+ private void validateCycle(Node node, Node node1)
+ {
+ for(int i = 0; i < node.mOutputs.size(); i++)
+ {
+ ConnectLine connectline = (ConnectLine)node.mOutputs.get(i);
+ if(connectline.mToK != null)
+ {
+ Node node3 = findNode(connectline.mToK.mScript);
+ if(node3.equals(node1))
+ throw new RSInvalidStateException("Loops in group not allowed.");
+ validateCycle(node3, node1);
+ }
+ if(connectline.mToF == null)
+ continue;
+ Node node2 = findNode(connectline.mToF.mScript);
+ if(node2.equals(node1))
+ throw new RSInvalidStateException("Loops in group not allowed.");
+ validateCycle(node2, node1);
+ }
+
+ }
+
+ private void validateDAG()
+ {
+ for(int i = 0; i < mNodes.size(); i++)
+ {
+ Node node = (Node)mNodes.get(i);
+ if(node.mInputs.size() != 0)
+ continue;
+ if(node.mOutputs.size() == 0 && mNodes.size() > 1)
+ throw new RSInvalidStateException("Groups cannot contain unconnected scripts");
+ validateDAGRecurse(node, i + 1);
+ }
+
+ int j = ((Node)mNodes.get(0)).dagNumber;
+ for(int k = 0; k < mNodes.size(); k++)
+ if(((Node)mNodes.get(k)).dagNumber != j)
+ throw new RSInvalidStateException("Multiple DAGs in group not allowed.");
+
+ }
+
+ private void validateDAGRecurse(Node node, int i)
+ {
+ if(node.dagNumber != 0 && node.dagNumber != i)
+ {
+ mergeDAGs(node.dagNumber, i);
+ } else
+ {
+ node.dagNumber = i;
+ int j = 0;
+ while(j < node.mOutputs.size())
+ {
+ ConnectLine connectline = (ConnectLine)node.mOutputs.get(j);
+ if(connectline.mToK != null)
+ validateDAGRecurse(findNode(connectline.mToK.mScript), i);
+ if(connectline.mToF != null)
+ validateDAGRecurse(findNode(connectline.mToF.mScript), i);
+ j++;
+ }
+ }
+ }
+
+ public Builder addConnection(Type type, Script.KernelID kernelid, Script.FieldID fieldid)
+ {
+ if(mT != null)
+ {
+ mT.addConnection(type, kernelid, fieldid);
+ } else
+ {
+ Node node = findNode(kernelid);
+ if(node == null)
+ throw new RSInvalidStateException("From script not found.");
+ Node node1 = findNode(fieldid.mScript);
+ if(node1 == null)
+ throw new RSInvalidStateException("To script not found.");
+ ConnectLine connectline = new ConnectLine(type, kernelid, fieldid);
+ mLines.add(new ConnectLine(type, kernelid, fieldid));
+ node.mOutputs.add(connectline);
+ node1.mInputs.add(connectline);
+ validateCycle(node, node);
+ }
+ return this;
+ }
+
+ public Builder addConnection(Type type, Script.KernelID kernelid, Script.KernelID kernelid1)
+ {
+ if(mT != null)
+ {
+ mT.addConnection(type, kernelid, kernelid1);
+ } else
+ {
+ Node node = findNode(kernelid);
+ if(node == null)
+ throw new RSInvalidStateException("From script not found.");
+ Node node1 = findNode(kernelid1);
+ if(node1 == null)
+ throw new RSInvalidStateException("To script not found.");
+ ConnectLine connectline = new ConnectLine(type, kernelid, kernelid1);
+ mLines.add(new ConnectLine(type, kernelid, kernelid1));
+ node.mOutputs.add(connectline);
+ node1.mInputs.add(connectline);
+ validateCycle(node, node);
+ }
+ return this;
+ }
+
+ public Builder addKernel(Script.KernelID kernelid)
+ {
+ if(mT == null) goto _L2; else goto _L1
+_L1:
+ mT.addKernel(kernelid);
+_L4:
+ return this;
+_L2:
+ if(mLines.size() != 0)
+ throw new RSInvalidStateException("Kernels may not be added once connections exist.");
+ if(findNode(kernelid) == null)
+ {
+ mKernelCount = 1 + mKernelCount;
+ Node node = findNode(kernelid.mScript);
+ if(node == null)
+ {
+ node = new Node(kernelid.mScript);
+ mNodes.add(node);
+ }
+ node.mKernels.add(kernelid);
+ }
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ public ScriptGroup create()
+ {
+ Object obj;
+ if(mT != null)
+ {
+ obj = mT.create();
+ } else
+ {
+ if(mNodes.size() == 0)
+ throw new RSInvalidStateException("Empty script groups are not allowed");
+ for(int i = 0; i < mNodes.size(); i++)
+ ((Node)mNodes.get(i)).dagNumber = 0;
+
+ validateDAG();
+ ArrayList arraylist = new ArrayList();
+ ArrayList arraylist1 = new ArrayList();
+ int ai[] = new int[mKernelCount];
+ int j = 0;
+ for(int k = 0; k < mNodes.size(); k++)
+ {
+ Node node = (Node)mNodes.get(k);
+ for(int l1 = 0; l1 < node.mKernels.size();)
+ {
+ Script.KernelID kernelid = (Script.KernelID)node.mKernels.get(l1);
+ int i2 = j + 1;
+ ai[j] = kernelid.getID(mRS);
+ boolean flag = false;
+ boolean flag1 = false;
+ for(int j2 = 0; j2 < node.mInputs.size(); j2++)
+ if(((ConnectLine)node.mInputs.get(j2)).mToK == kernelid)
+ flag = true;
+
+ for(int k2 = 0; k2 < node.mOutputs.size(); k2++)
+ if(((ConnectLine)node.mOutputs.get(k2)).mFrom == kernelid)
+ flag1 = true;
+
+ if(!flag)
+ arraylist.add(new IO(kernelid));
+ if(!flag1)
+ arraylist1.add(new IO(kernelid));
+ l1++;
+ j = i2;
+ }
+
+ }
+
+ if(j != mKernelCount)
+ throw new RSRuntimeException("Count mismatch, should not happen.");
+ int ai1[] = new int[mLines.size()];
+ int ai2[] = new int[mLines.size()];
+ int ai3[] = new int[mLines.size()];
+ int ai4[] = new int[mLines.size()];
+ for(int l = 0; l < mLines.size(); l++)
+ {
+ ConnectLine connectline = (ConnectLine)mLines.get(l);
+ ai1[l] = connectline.mFrom.getID(mRS);
+ if(connectline.mToK != null)
+ ai2[l] = connectline.mToK.getID(mRS);
+ if(connectline.mToF != null)
+ ai3[l] = connectline.mToF.getID(mRS);
+ ai4[l] = connectline.mAllocationType.getID(mRS);
+ }
+
+ int i1 = mRS.nScriptGroupCreate(ai, ai1, ai2, ai3, ai4);
+ if(i1 == 0)
+ throw new RSRuntimeException("Object creation error, should not happen.");
+ RenderScript renderscript = mRS;
+ obj = new ScriptGroup(i1, renderscript);
+ IO aio[] = new IO[arraylist1.size()];
+ obj.mOutputs = aio;
+ for(int j1 = 0; j1 < arraylist1.size(); j1++)
+ ((ScriptGroup) (obj)).mOutputs[j1] = (IO)arraylist1.get(j1);
+
+ IO aio1[] = new IO[arraylist.size()];
+ obj.mInputs = aio1;
+ int k1 = 0;
+ while(k1 < arraylist.size())
+ {
+ ((ScriptGroup) (obj)).mInputs[k1] = (IO)arraylist.get(k1);
+ k1++;
+ }
+ }
+ return ((ScriptGroup) (obj));
+ }
+
+ private int mKernelCount;
+ private ArrayList mLines;
+ private ArrayList mNodes;
+ private RenderScript mRS;
+ private ScriptGroupThunker.Builder mT;
+
+ public Builder(RenderScript renderscript)
+ {
+ mNodes = new ArrayList();
+ mLines = new ArrayList();
+ if(RenderScript.isNative)
+ mT = new ScriptGroupThunker.Builder(renderscript);
+ mRS = renderscript;
+ }
+ }
+
+ static class Node
+ {
+
+ int dagNumber;
+ ArrayList mInputs;
+ ArrayList mKernels;
+ Node mNext;
+ ArrayList mOutputs;
+ Script mScript;
+
+ Node(Script script)
+ {
+ mKernels = new ArrayList();
+ mInputs = new ArrayList();
+ mOutputs = new ArrayList();
+ mScript = script;
+ }
+ }
+
+ static class ConnectLine
+ {
+
+ Type mAllocationType;
+ Script.KernelID mFrom;
+ Script.FieldID mToF;
+ Script.KernelID mToK;
+
+ ConnectLine(Type type, Script.KernelID kernelid, Script.FieldID fieldid)
+ {
+ mFrom = kernelid;
+ mToF = fieldid;
+ mAllocationType = type;
+ }
+
+ ConnectLine(Type type, Script.KernelID kernelid, Script.KernelID kernelid1)
+ {
+ mFrom = kernelid;
+ mToK = kernelid1;
+ mAllocationType = type;
+ }
+ }
+
+ static class IO
+ {
+
+ Allocation mAllocation;
+ Script.KernelID mKID;
+
+ IO(Script.KernelID kernelid)
+ {
+ mKID = kernelid;
+ }
+ }
+
+
+ ScriptGroup(int i, RenderScript renderscript)
+ {
+ super(i, renderscript);
+ }
+
+ public void execute()
+ {
+ mRS.nScriptGroupExecute(getID(mRS));
+ }
+
+ public void setInput(Script.KernelID kernelid, Allocation allocation)
+ {
+ for(int i = 0; i < mInputs.length; i++)
+ if(mInputs[i].mKID == kernelid)
+ {
+ mInputs[i].mAllocation = allocation;
+ mRS.nScriptGroupSetInput(getID(mRS), kernelid.getID(mRS), mRS.safeID(allocation));
+ return;
+ }
+
+ throw new RSIllegalArgumentException("Script not found");
+ }
+
+ public void setOutput(Script.KernelID kernelid, Allocation allocation)
+ {
+ for(int i = 0; i < mOutputs.length; i++)
+ if(mOutputs[i].mKID == kernelid)
+ {
+ mOutputs[i].mAllocation = allocation;
+ mRS.nScriptGroupSetOutput(getID(mRS), kernelid.getID(mRS), mRS.safeID(allocation));
+ return;
+ }
+
+ throw new RSIllegalArgumentException("Script not found");
+ }
+
+ IO mInputs[];
+ IO mOutputs[];
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptGroupThunker.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptGroupThunker.java
new file mode 100644
index 0000000..bdbcdec
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptGroupThunker.java
@@ -0,0 +1,150 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+import android.renderscript.*;
+
+// Referenced classes of package android.support.v8.renderscript:
+// ScriptGroup, ExceptionThunker, AllocationThunker, RenderScript,
+// Allocation, RenderScriptThunker, TypeThunker, Type
+
+class ScriptGroupThunker extends android.support.v8.renderscript.ScriptGroup
+{
+ public static final class Builder
+ {
+
+ public Builder addConnection(Type type, Script.KernelID kernelid, Script.FieldID fieldid)
+ {
+ TypeThunker typethunker = (TypeThunker)type;
+ try
+ {
+ bN.addConnection(typethunker.getNObj(), kernelid.mN, fieldid.mN);
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return this;
+ }
+
+ public Builder addConnection(Type type, Script.KernelID kernelid, Script.KernelID kernelid1)
+ {
+ TypeThunker typethunker = (TypeThunker)type;
+ try
+ {
+ bN.addConnection(typethunker.getNObj(), kernelid.mN, kernelid1.mN);
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return this;
+ }
+
+ public Builder addKernel(Script.KernelID kernelid)
+ {
+ try
+ {
+ bN.addKernel(kernelid.mN);
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return this;
+ }
+
+ public ScriptGroupThunker create()
+ {
+ ScriptGroupThunker scriptgroupthunker = new ScriptGroupThunker(0, mRS);
+ try
+ {
+ scriptgroupthunker.mN = bN.create();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return scriptgroupthunker;
+ }
+
+ android.renderscript.ScriptGroup.Builder bN;
+ RenderScript mRS;
+
+ Builder(RenderScript renderscript)
+ {
+ RenderScriptThunker renderscriptthunker = (RenderScriptThunker)renderscript;
+ mRS = renderscript;
+ try
+ {
+ bN = new android.renderscript.ScriptGroup.Builder(renderscriptthunker.mN);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+ }
+
+
+ ScriptGroupThunker(int i, RenderScript renderscript)
+ {
+ super(i, renderscript);
+ }
+
+ public void execute()
+ {
+ try
+ {
+ mN.execute();
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ volatile BaseObj getNObj()
+ {
+ return getNObj();
+ }
+
+ ScriptGroup getNObj()
+ {
+ return mN;
+ }
+
+ public void setInput(Script.KernelID kernelid, Allocation allocation)
+ {
+ AllocationThunker allocationthunker = (AllocationThunker)allocation;
+ try
+ {
+ mN.setInput(kernelid.mN, allocationthunker.getNObj());
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void setOutput(Script.KernelID kernelid, Allocation allocation)
+ {
+ AllocationThunker allocationthunker = (AllocationThunker)allocation;
+ try
+ {
+ mN.setOutput(kernelid.mN, allocationthunker.getNObj());
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ ScriptGroup mN;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsic.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsic.java
new file mode 100644
index 0000000..4e2d798
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsic.java
@@ -0,0 +1,18 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+// Referenced classes of package android.support.v8.renderscript:
+// Script, RenderScript
+
+public abstract class ScriptIntrinsic extends Script
+{
+
+ ScriptIntrinsic(int i, RenderScript renderscript)
+ {
+ super(i, renderscript);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsic3DLUT.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsic3DLUT.java
new file mode 100644
index 0000000..571915f
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsic3DLUT.java
@@ -0,0 +1,66 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+// Referenced classes of package android.support.v8.renderscript:
+// ScriptIntrinsic, RenderScript, RenderScriptThunker, ScriptIntrinsic3DLUTThunker,
+// Element, RSIllegalArgumentException, Allocation, Type
+
+public class ScriptIntrinsic3DLUT extends ScriptIntrinsic
+{
+
+ protected ScriptIntrinsic3DLUT(int i, RenderScript renderscript, Element element)
+ {
+ super(i, renderscript);
+ mElement = element;
+ }
+
+ public static ScriptIntrinsic3DLUT create(RenderScript renderscript, Element element)
+ {
+ Object obj;
+ if(RenderScript.isNative)
+ {
+ RenderScriptThunker _tmp = (RenderScriptThunker)renderscript;
+ obj = ScriptIntrinsic3DLUTThunker.create(renderscript, element);
+ } else
+ {
+ int i = renderscript.nScriptIntrinsicCreate(8, element.getID(renderscript));
+ if(!element.isCompatible(Element.U8_4(renderscript)))
+ throw new RSIllegalArgumentException("Element must be compatible with uchar4.");
+ obj = new ScriptIntrinsic3DLUT(i, renderscript, element);
+ }
+ return ((ScriptIntrinsic3DLUT) (obj));
+ }
+
+ public void forEach(Allocation allocation, Allocation allocation1)
+ {
+ forEach(0, allocation, allocation1, null);
+ }
+
+ public Script.KernelID getKernelID()
+ {
+ return createKernelID(0, 3, null, null);
+ }
+
+ public void setLUT(Allocation allocation)
+ {
+ Type type = allocation.getType();
+ if(type.getZ() == 0)
+ throw new RSIllegalArgumentException("LUT must be 3d.");
+ if(!type.getElement().isCompatible(mElement))
+ {
+ throw new RSIllegalArgumentException("LUT element type must match.");
+ } else
+ {
+ mLUT = allocation;
+ setVar(0, mLUT);
+ return;
+ }
+ }
+
+ private Element mElement;
+ private Allocation mLUT;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsic3DLUTThunker.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsic3DLUTThunker.java
new file mode 100644
index 0000000..8168df1
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsic3DLUTThunker.java
@@ -0,0 +1,96 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+import android.renderscript.*;
+
+// Referenced classes of package android.support.v8.renderscript:
+// ScriptIntrinsic3DLUT, RenderScriptThunker, ElementThunker, ExceptionThunker,
+// AllocationThunker, RenderScript, Element, Allocation
+
+class ScriptIntrinsic3DLUTThunker extends android.support.v8.renderscript.ScriptIntrinsic3DLUT
+{
+
+ private ScriptIntrinsic3DLUTThunker(int i, RenderScript renderscript, Element element)
+ {
+ super(i, renderscript, element);
+ }
+
+ public static ScriptIntrinsic3DLUTThunker create(RenderScript renderscript, Element element)
+ {
+ RenderScriptThunker renderscriptthunker = (RenderScriptThunker)renderscript;
+ ElementThunker elementthunker = (ElementThunker)element;
+ ScriptIntrinsic3DLUTThunker scriptintrinsic3dlutthunker = new ScriptIntrinsic3DLUTThunker(0, renderscript, element);
+ try
+ {
+ scriptintrinsic3dlutthunker.mN = ScriptIntrinsic3DLUT.create(renderscriptthunker.mN, elementthunker.getNObj());
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return scriptintrinsic3dlutthunker;
+ }
+
+ public void forEach(Allocation allocation, Allocation allocation1)
+ {
+ AllocationThunker allocationthunker = (AllocationThunker)allocation;
+ AllocationThunker allocationthunker1 = (AllocationThunker)allocation1;
+ try
+ {
+ mN.forEach(allocationthunker.getNObj(), allocationthunker1.getNObj());
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public Script.KernelID getKernelID()
+ {
+ Script.KernelID kernelid = createKernelID(0, 3, null, null);
+ try
+ {
+ kernelid.mN = mN.getKernelID();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return kernelid;
+ }
+
+ volatile BaseObj getNObj()
+ {
+ return getNObj();
+ }
+
+ volatile Script getNObj()
+ {
+ return getNObj();
+ }
+
+ ScriptIntrinsic3DLUT getNObj()
+ {
+ return mN;
+ }
+
+ public void setLUT(Allocation allocation)
+ {
+ AllocationThunker allocationthunker = (AllocationThunker)allocation;
+ try
+ {
+ mN.setLUT(allocationthunker.getNObj());
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ ScriptIntrinsic3DLUT mN;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicBlend.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicBlend.java
new file mode 100644
index 0000000..e1b7c80
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicBlend.java
@@ -0,0 +1,196 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+// Referenced classes of package android.support.v8.renderscript:
+// ScriptIntrinsic, Allocation, Element, RSIllegalArgumentException,
+// RenderScript, RenderScriptThunker, ScriptIntrinsicBlendThunker
+
+public class ScriptIntrinsicBlend extends ScriptIntrinsic
+{
+
+ ScriptIntrinsicBlend(int i, RenderScript renderscript)
+ {
+ super(i, renderscript);
+ }
+
+ private void blend(int i, Allocation allocation, Allocation allocation1)
+ {
+ if(!allocation.getElement().isCompatible(Element.U8_4(mRS)))
+ throw new RSIllegalArgumentException("Input is not of expected format.");
+ if(!allocation1.getElement().isCompatible(Element.U8_4(mRS)))
+ {
+ throw new RSIllegalArgumentException("Output is not of expected format.");
+ } else
+ {
+ forEach(i, allocation, allocation1, null);
+ return;
+ }
+ }
+
+ public static ScriptIntrinsicBlend create(RenderScript renderscript, Element element)
+ {
+ Object obj;
+ if(RenderScript.isNative)
+ {
+ RenderScriptThunker _tmp = (RenderScriptThunker)renderscript;
+ obj = ScriptIntrinsicBlendThunker.create(renderscript, element);
+ } else
+ {
+ obj = new ScriptIntrinsicBlend(renderscript.nScriptIntrinsicCreate(7, element.getID(renderscript)), renderscript);
+ }
+ return ((ScriptIntrinsicBlend) (obj));
+ }
+
+ public void forEachAdd(Allocation allocation, Allocation allocation1)
+ {
+ blend(34, allocation, allocation1);
+ }
+
+ public void forEachClear(Allocation allocation, Allocation allocation1)
+ {
+ blend(0, allocation, allocation1);
+ }
+
+ public void forEachDst(Allocation allocation, Allocation allocation1)
+ {
+ }
+
+ public void forEachDstAtop(Allocation allocation, Allocation allocation1)
+ {
+ blend(10, allocation, allocation1);
+ }
+
+ public void forEachDstIn(Allocation allocation, Allocation allocation1)
+ {
+ blend(6, allocation, allocation1);
+ }
+
+ public void forEachDstOut(Allocation allocation, Allocation allocation1)
+ {
+ blend(8, allocation, allocation1);
+ }
+
+ public void forEachDstOver(Allocation allocation, Allocation allocation1)
+ {
+ blend(4, allocation, allocation1);
+ }
+
+ public void forEachMultiply(Allocation allocation, Allocation allocation1)
+ {
+ blend(14, allocation, allocation1);
+ }
+
+ public void forEachSrc(Allocation allocation, Allocation allocation1)
+ {
+ blend(1, allocation, allocation1);
+ }
+
+ public void forEachSrcAtop(Allocation allocation, Allocation allocation1)
+ {
+ blend(9, allocation, allocation1);
+ }
+
+ public void forEachSrcIn(Allocation allocation, Allocation allocation1)
+ {
+ blend(5, allocation, allocation1);
+ }
+
+ public void forEachSrcOut(Allocation allocation, Allocation allocation1)
+ {
+ blend(7, allocation, allocation1);
+ }
+
+ public void forEachSrcOver(Allocation allocation, Allocation allocation1)
+ {
+ blend(3, allocation, allocation1);
+ }
+
+ public void forEachSubtract(Allocation allocation, Allocation allocation1)
+ {
+ blend(35, allocation, allocation1);
+ }
+
+ public void forEachXor(Allocation allocation, Allocation allocation1)
+ {
+ blend(11, allocation, allocation1);
+ }
+
+ public Script.KernelID getKernelIDAdd()
+ {
+ return createKernelID(34, 3, null, null);
+ }
+
+ public Script.KernelID getKernelIDClear()
+ {
+ return createKernelID(0, 3, null, null);
+ }
+
+ public Script.KernelID getKernelIDDst()
+ {
+ return createKernelID(2, 3, null, null);
+ }
+
+ public Script.KernelID getKernelIDDstAtop()
+ {
+ return createKernelID(10, 3, null, null);
+ }
+
+ public Script.KernelID getKernelIDDstIn()
+ {
+ return createKernelID(6, 3, null, null);
+ }
+
+ public Script.KernelID getKernelIDDstOut()
+ {
+ return createKernelID(8, 3, null, null);
+ }
+
+ public Script.KernelID getKernelIDDstOver()
+ {
+ return createKernelID(4, 3, null, null);
+ }
+
+ public Script.KernelID getKernelIDMultiply()
+ {
+ return createKernelID(14, 3, null, null);
+ }
+
+ public Script.KernelID getKernelIDSrc()
+ {
+ return createKernelID(1, 3, null, null);
+ }
+
+ public Script.KernelID getKernelIDSrcAtop()
+ {
+ return createKernelID(9, 3, null, null);
+ }
+
+ public Script.KernelID getKernelIDSrcIn()
+ {
+ return createKernelID(5, 3, null, null);
+ }
+
+ public Script.KernelID getKernelIDSrcOut()
+ {
+ return createKernelID(7, 3, null, null);
+ }
+
+ public Script.KernelID getKernelIDSrcOver()
+ {
+ return createKernelID(3, 3, null, null);
+ }
+
+ public Script.KernelID getKernelIDSubtract()
+ {
+ return createKernelID(35, 3, null, null);
+ }
+
+ public Script.KernelID getKernelIDXor()
+ {
+ return createKernelID(11, 3, null, null);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicBlendThunker.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicBlendThunker.java
new file mode 100644
index 0000000..8f54b9c
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicBlendThunker.java
@@ -0,0 +1,488 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+import android.renderscript.*;
+
+// Referenced classes of package android.support.v8.renderscript:
+// ScriptIntrinsicBlend, RenderScriptThunker, ElementThunker, ExceptionThunker,
+// AllocationThunker, RenderScript, Element, Allocation
+
+class ScriptIntrinsicBlendThunker extends android.support.v8.renderscript.ScriptIntrinsicBlend
+{
+
+ ScriptIntrinsicBlendThunker(int i, RenderScript renderscript)
+ {
+ super(i, renderscript);
+ }
+
+ public static ScriptIntrinsicBlendThunker create(RenderScript renderscript, Element element)
+ {
+ RenderScriptThunker renderscriptthunker = (RenderScriptThunker)renderscript;
+ ElementThunker elementthunker = (ElementThunker)element;
+ ScriptIntrinsicBlendThunker scriptintrinsicblendthunker = new ScriptIntrinsicBlendThunker(0, renderscript);
+ try
+ {
+ scriptintrinsicblendthunker.mN = ScriptIntrinsicBlend.create(renderscriptthunker.mN, elementthunker.getNObj());
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return scriptintrinsicblendthunker;
+ }
+
+ public void forEachAdd(Allocation allocation, Allocation allocation1)
+ {
+ AllocationThunker allocationthunker = (AllocationThunker)allocation;
+ AllocationThunker allocationthunker1 = (AllocationThunker)allocation1;
+ try
+ {
+ mN.forEachAdd(allocationthunker.getNObj(), allocationthunker1.getNObj());
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void forEachClear(Allocation allocation, Allocation allocation1)
+ {
+ AllocationThunker allocationthunker = (AllocationThunker)allocation;
+ AllocationThunker allocationthunker1 = (AllocationThunker)allocation1;
+ try
+ {
+ mN.forEachClear(allocationthunker.getNObj(), allocationthunker1.getNObj());
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void forEachDst(Allocation allocation, Allocation allocation1)
+ {
+ AllocationThunker allocationthunker = (AllocationThunker)allocation;
+ AllocationThunker allocationthunker1 = (AllocationThunker)allocation1;
+ try
+ {
+ mN.forEachDst(allocationthunker.getNObj(), allocationthunker1.getNObj());
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void forEachDstAtop(Allocation allocation, Allocation allocation1)
+ {
+ AllocationThunker allocationthunker = (AllocationThunker)allocation;
+ AllocationThunker allocationthunker1 = (AllocationThunker)allocation1;
+ try
+ {
+ mN.forEachDstAtop(allocationthunker.getNObj(), allocationthunker1.getNObj());
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void forEachDstIn(Allocation allocation, Allocation allocation1)
+ {
+ AllocationThunker allocationthunker = (AllocationThunker)allocation;
+ AllocationThunker allocationthunker1 = (AllocationThunker)allocation1;
+ try
+ {
+ mN.forEachDstIn(allocationthunker.getNObj(), allocationthunker1.getNObj());
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void forEachDstOut(Allocation allocation, Allocation allocation1)
+ {
+ AllocationThunker allocationthunker = (AllocationThunker)allocation;
+ AllocationThunker allocationthunker1 = (AllocationThunker)allocation1;
+ try
+ {
+ mN.forEachDstOut(allocationthunker.getNObj(), allocationthunker1.getNObj());
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void forEachDstOver(Allocation allocation, Allocation allocation1)
+ {
+ AllocationThunker allocationthunker = (AllocationThunker)allocation;
+ AllocationThunker allocationthunker1 = (AllocationThunker)allocation1;
+ try
+ {
+ mN.forEachDstOver(allocationthunker.getNObj(), allocationthunker1.getNObj());
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void forEachMultiply(Allocation allocation, Allocation allocation1)
+ {
+ AllocationThunker allocationthunker = (AllocationThunker)allocation;
+ AllocationThunker allocationthunker1 = (AllocationThunker)allocation1;
+ try
+ {
+ mN.forEachMultiply(allocationthunker.getNObj(), allocationthunker1.getNObj());
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void forEachSrc(Allocation allocation, Allocation allocation1)
+ {
+ AllocationThunker allocationthunker = (AllocationThunker)allocation;
+ AllocationThunker allocationthunker1 = (AllocationThunker)allocation1;
+ try
+ {
+ mN.forEachSrc(allocationthunker.getNObj(), allocationthunker1.getNObj());
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void forEachSrcAtop(Allocation allocation, Allocation allocation1)
+ {
+ AllocationThunker allocationthunker = (AllocationThunker)allocation;
+ AllocationThunker allocationthunker1 = (AllocationThunker)allocation1;
+ try
+ {
+ mN.forEachSrcAtop(allocationthunker.getNObj(), allocationthunker1.getNObj());
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void forEachSrcIn(Allocation allocation, Allocation allocation1)
+ {
+ AllocationThunker allocationthunker = (AllocationThunker)allocation;
+ AllocationThunker allocationthunker1 = (AllocationThunker)allocation1;
+ try
+ {
+ mN.forEachSrcIn(allocationthunker.getNObj(), allocationthunker1.getNObj());
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void forEachSrcOut(Allocation allocation, Allocation allocation1)
+ {
+ AllocationThunker allocationthunker = (AllocationThunker)allocation;
+ AllocationThunker allocationthunker1 = (AllocationThunker)allocation1;
+ try
+ {
+ mN.forEachSrcOut(allocationthunker.getNObj(), allocationthunker1.getNObj());
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void forEachSrcOver(Allocation allocation, Allocation allocation1)
+ {
+ AllocationThunker allocationthunker = (AllocationThunker)allocation;
+ AllocationThunker allocationthunker1 = (AllocationThunker)allocation1;
+ try
+ {
+ mN.forEachSrcOver(allocationthunker.getNObj(), allocationthunker1.getNObj());
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void forEachSubtract(Allocation allocation, Allocation allocation1)
+ {
+ AllocationThunker allocationthunker = (AllocationThunker)allocation;
+ AllocationThunker allocationthunker1 = (AllocationThunker)allocation1;
+ try
+ {
+ mN.forEachSubtract(allocationthunker.getNObj(), allocationthunker1.getNObj());
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void forEachXor(Allocation allocation, Allocation allocation1)
+ {
+ AllocationThunker allocationthunker = (AllocationThunker)allocation;
+ AllocationThunker allocationthunker1 = (AllocationThunker)allocation1;
+ try
+ {
+ mN.forEachXor(allocationthunker.getNObj(), allocationthunker1.getNObj());
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public Script.KernelID getKernelIDAdd()
+ {
+ Script.KernelID kernelid = createKernelID(34, 3, null, null);
+ try
+ {
+ kernelid.mN = mN.getKernelIDAdd();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return kernelid;
+ }
+
+ public Script.KernelID getKernelIDClear()
+ {
+ Script.KernelID kernelid = createKernelID(0, 3, null, null);
+ try
+ {
+ kernelid.mN = mN.getKernelIDClear();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return kernelid;
+ }
+
+ public Script.KernelID getKernelIDDst()
+ {
+ Script.KernelID kernelid = createKernelID(2, 3, null, null);
+ try
+ {
+ kernelid.mN = mN.getKernelIDDst();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return kernelid;
+ }
+
+ public Script.KernelID getKernelIDDstAtop()
+ {
+ Script.KernelID kernelid = createKernelID(10, 3, null, null);
+ try
+ {
+ kernelid.mN = mN.getKernelIDDstAtop();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return kernelid;
+ }
+
+ public Script.KernelID getKernelIDDstIn()
+ {
+ Script.KernelID kernelid = createKernelID(6, 3, null, null);
+ try
+ {
+ kernelid.mN = mN.getKernelIDDstIn();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return kernelid;
+ }
+
+ public Script.KernelID getKernelIDDstOut()
+ {
+ Script.KernelID kernelid = createKernelID(8, 3, null, null);
+ try
+ {
+ kernelid.mN = mN.getKernelIDDstOut();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return kernelid;
+ }
+
+ public Script.KernelID getKernelIDDstOver()
+ {
+ Script.KernelID kernelid = createKernelID(4, 3, null, null);
+ try
+ {
+ kernelid.mN = mN.getKernelIDDstOver();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return kernelid;
+ }
+
+ public Script.KernelID getKernelIDMultiply()
+ {
+ Script.KernelID kernelid = createKernelID(14, 3, null, null);
+ try
+ {
+ kernelid.mN = mN.getKernelIDMultiply();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return kernelid;
+ }
+
+ public Script.KernelID getKernelIDSrc()
+ {
+ Script.KernelID kernelid = createKernelID(1, 3, null, null);
+ try
+ {
+ kernelid.mN = mN.getKernelIDSrc();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return kernelid;
+ }
+
+ public Script.KernelID getKernelIDSrcAtop()
+ {
+ Script.KernelID kernelid = createKernelID(9, 3, null, null);
+ try
+ {
+ kernelid.mN = mN.getKernelIDSrcAtop();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return kernelid;
+ }
+
+ public Script.KernelID getKernelIDSrcIn()
+ {
+ Script.KernelID kernelid = createKernelID(5, 3, null, null);
+ try
+ {
+ kernelid.mN = mN.getKernelIDSrcIn();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return kernelid;
+ }
+
+ public Script.KernelID getKernelIDSrcOut()
+ {
+ Script.KernelID kernelid = createKernelID(7, 3, null, null);
+ try
+ {
+ kernelid.mN = mN.getKernelIDSrcOut();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return kernelid;
+ }
+
+ public Script.KernelID getKernelIDSrcOver()
+ {
+ Script.KernelID kernelid = createKernelID(3, 3, null, null);
+ try
+ {
+ kernelid.mN = mN.getKernelIDSrcOver();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return kernelid;
+ }
+
+ public Script.KernelID getKernelIDSubtract()
+ {
+ Script.KernelID kernelid = createKernelID(35, 3, null, null);
+ try
+ {
+ kernelid.mN = mN.getKernelIDSubtract();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return kernelid;
+ }
+
+ public Script.KernelID getKernelIDXor()
+ {
+ Script.KernelID kernelid = createKernelID(11, 3, null, null);
+ try
+ {
+ kernelid.mN = mN.getKernelIDXor();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return kernelid;
+ }
+
+ volatile BaseObj getNObj()
+ {
+ return getNObj();
+ }
+
+ volatile Script getNObj()
+ {
+ return getNObj();
+ }
+
+ ScriptIntrinsicBlend getNObj()
+ {
+ return mN;
+ }
+
+ ScriptIntrinsicBlend mN;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicBlur.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicBlur.java
new file mode 100644
index 0000000..fa91ba9
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicBlur.java
@@ -0,0 +1,72 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+// Referenced classes of package android.support.v8.renderscript:
+// ScriptIntrinsic, RenderScript, RenderScriptThunker, ScriptIntrinsicBlurThunker,
+// Element, RSIllegalArgumentException, Allocation
+
+public class ScriptIntrinsicBlur extends ScriptIntrinsic
+{
+
+ protected ScriptIntrinsicBlur(int i, RenderScript renderscript)
+ {
+ super(i, renderscript);
+ }
+
+ public static ScriptIntrinsicBlur create(RenderScript renderscript, Element element)
+ {
+ Object obj;
+ if(RenderScript.isNative)
+ {
+ RenderScriptThunker _tmp = (RenderScriptThunker)renderscript;
+ obj = ScriptIntrinsicBlurThunker.create(renderscript, element);
+ } else
+ {
+ if(!element.isCompatible(Element.U8_4(renderscript)) && !element.isCompatible(Element.U8(renderscript)))
+ throw new RSIllegalArgumentException("Unsuported element type.");
+ obj = new ScriptIntrinsicBlur(renderscript.nScriptIntrinsicCreate(5, element.getID(renderscript)), renderscript);
+ ((ScriptIntrinsicBlur) (obj)).setRadius(5F);
+ }
+ return ((ScriptIntrinsicBlur) (obj));
+ }
+
+ public void forEach(Allocation allocation)
+ {
+ forEach(0, null, allocation, null);
+ }
+
+ public Script.FieldID getFieldID_Input()
+ {
+ return createFieldID(1, null);
+ }
+
+ public Script.KernelID getKernelID()
+ {
+ return createKernelID(0, 2, null, null);
+ }
+
+ public void setInput(Allocation allocation)
+ {
+ mInput = allocation;
+ setVar(1, allocation);
+ }
+
+ public void setRadius(float f)
+ {
+ if(f <= 0.0F || f > 25F)
+ {
+ throw new RSIllegalArgumentException("Radius out of range (0 < r <= 25).");
+ } else
+ {
+ setVar(0, f);
+ return;
+ }
+ }
+
+ private Allocation mInput;
+ private final float mValues[] = new float[9];
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicBlurThunker.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicBlurThunker.java
new file mode 100644
index 0000000..b39b857
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicBlurThunker.java
@@ -0,0 +1,121 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+import android.renderscript.*;
+
+// Referenced classes of package android.support.v8.renderscript:
+// ScriptIntrinsicBlur, RenderScriptThunker, ElementThunker, ExceptionThunker,
+// AllocationThunker, RenderScript, Element, Allocation
+
+class ScriptIntrinsicBlurThunker extends android.support.v8.renderscript.ScriptIntrinsicBlur
+{
+
+ protected ScriptIntrinsicBlurThunker(int i, RenderScript renderscript)
+ {
+ super(i, renderscript);
+ }
+
+ public static ScriptIntrinsicBlurThunker create(RenderScript renderscript, Element element)
+ {
+ RenderScriptThunker renderscriptthunker = (RenderScriptThunker)renderscript;
+ ElementThunker elementthunker = (ElementThunker)element;
+ ScriptIntrinsicBlurThunker scriptintrinsicblurthunker = new ScriptIntrinsicBlurThunker(0, renderscript);
+ try
+ {
+ scriptintrinsicblurthunker.mN = ScriptIntrinsicBlur.create(renderscriptthunker.mN, elementthunker.getNObj());
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return scriptintrinsicblurthunker;
+ }
+
+ public void forEach(Allocation allocation)
+ {
+ AllocationThunker allocationthunker;
+ allocationthunker = (AllocationThunker)allocation;
+ if(allocationthunker == null)
+ break MISSING_BLOCK_LABEL_20;
+ mN.forEach(allocationthunker.getNObj());
+ return;
+ RSRuntimeException rsruntimeexception;
+ rsruntimeexception;
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+
+ public Script.FieldID getFieldID_Input()
+ {
+ Script.FieldID fieldid = createFieldID(1, null);
+ try
+ {
+ fieldid.mN = mN.getFieldID_Input();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return fieldid;
+ }
+
+ public Script.KernelID getKernelID()
+ {
+ Script.KernelID kernelid = createKernelID(0, 2, null, null);
+ try
+ {
+ kernelid.mN = mN.getKernelID();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return kernelid;
+ }
+
+ volatile BaseObj getNObj()
+ {
+ return getNObj();
+ }
+
+ volatile Script getNObj()
+ {
+ return getNObj();
+ }
+
+ ScriptIntrinsicBlur getNObj()
+ {
+ return mN;
+ }
+
+ public void setInput(Allocation allocation)
+ {
+ AllocationThunker allocationthunker = (AllocationThunker)allocation;
+ try
+ {
+ mN.setInput(allocationthunker.getNObj());
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void setRadius(float f)
+ {
+ try
+ {
+ mN.setRadius(f);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ ScriptIntrinsicBlur mN;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicColorMatrix.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicColorMatrix.java
new file mode 100644
index 0000000..facefc8
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicColorMatrix.java
@@ -0,0 +1,113 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+// Referenced classes of package android.support.v8.renderscript:
+// ScriptIntrinsic, Matrix4f, RenderScript, RenderScriptThunker,
+// ScriptIntrinsicColorMatrixThunker, Element, RSIllegalArgumentException, FieldPacker,
+// Allocation, Matrix3f
+
+public class ScriptIntrinsicColorMatrix extends ScriptIntrinsic
+{
+
+ protected ScriptIntrinsicColorMatrix(int i, RenderScript renderscript)
+ {
+ super(i, renderscript);
+ }
+
+ public static ScriptIntrinsicColorMatrix create(RenderScript renderscript, Element element)
+ {
+ Object obj;
+ if(RenderScript.isNative)
+ {
+ RenderScriptThunker _tmp = (RenderScriptThunker)renderscript;
+ obj = ScriptIntrinsicColorMatrixThunker.create(renderscript, element);
+ } else
+ {
+ if(!element.isCompatible(Element.U8_4(renderscript)))
+ throw new RSIllegalArgumentException("Unsuported element type.");
+ obj = new ScriptIntrinsicColorMatrix(renderscript.nScriptIntrinsicCreate(2, element.getID(renderscript)), renderscript);
+ }
+ return ((ScriptIntrinsicColorMatrix) (obj));
+ }
+
+ private void setMatrix()
+ {
+ FieldPacker fieldpacker = new FieldPacker(64);
+ fieldpacker.addMatrix(mMatrix);
+ setVar(0, fieldpacker);
+ }
+
+ public void forEach(Allocation allocation, Allocation allocation1)
+ {
+ forEach(0, allocation, allocation1, null);
+ }
+
+ public Script.KernelID getKernelID()
+ {
+ return createKernelID(0, 3, null, null);
+ }
+
+ public void setColorMatrix(Matrix3f matrix3f)
+ {
+ mMatrix.load(matrix3f);
+ setMatrix();
+ }
+
+ public void setColorMatrix(Matrix4f matrix4f)
+ {
+ mMatrix.load(matrix4f);
+ setMatrix();
+ }
+
+ public void setGreyscale()
+ {
+ mMatrix.loadIdentity();
+ mMatrix.set(0, 0, 0.299F);
+ mMatrix.set(1, 0, 0.587F);
+ mMatrix.set(2, 0, 0.114F);
+ mMatrix.set(0, 1, 0.299F);
+ mMatrix.set(1, 1, 0.587F);
+ mMatrix.set(2, 1, 0.114F);
+ mMatrix.set(0, 2, 0.299F);
+ mMatrix.set(1, 2, 0.587F);
+ mMatrix.set(2, 2, 0.114F);
+ setMatrix();
+ }
+
+ public void setRGBtoYUV()
+ {
+ mMatrix.loadIdentity();
+ mMatrix.set(0, 0, 0.299F);
+ mMatrix.set(1, 0, 0.587F);
+ mMatrix.set(2, 0, 0.114F);
+ mMatrix.set(0, 1, -0.14713F);
+ mMatrix.set(1, 1, -0.28886F);
+ mMatrix.set(2, 1, 0.436F);
+ mMatrix.set(0, 2, 0.615F);
+ mMatrix.set(1, 2, -0.51499F);
+ mMatrix.set(2, 2, -0.10001F);
+ setMatrix();
+ }
+
+ public void setYUVtoRGB()
+ {
+ mMatrix.loadIdentity();
+ mMatrix.set(0, 0, 1.0F);
+ mMatrix.set(1, 0, 0.0F);
+ mMatrix.set(2, 0, 1.13983F);
+ mMatrix.set(0, 1, 1.0F);
+ mMatrix.set(1, 1, -0.39465F);
+ mMatrix.set(2, 1, -0.5806F);
+ mMatrix.set(0, 2, 1.0F);
+ mMatrix.set(1, 2, 2.03211F);
+ mMatrix.set(2, 2, 0.0F);
+ setMatrix();
+ }
+
+ private Allocation mInput;
+ private final Matrix4f mMatrix = new Matrix4f();
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicColorMatrixThunker.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicColorMatrixThunker.java
new file mode 100644
index 0000000..78a6ae1
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicColorMatrixThunker.java
@@ -0,0 +1,148 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+import android.renderscript.*;
+
+// Referenced classes of package android.support.v8.renderscript:
+// ScriptIntrinsicColorMatrix, RenderScriptThunker, ElementThunker, ExceptionThunker,
+// AllocationThunker, Matrix3f, Matrix4f, RenderScript,
+// Element, Allocation
+
+class ScriptIntrinsicColorMatrixThunker extends android.support.v8.renderscript.ScriptIntrinsicColorMatrix
+{
+
+ private ScriptIntrinsicColorMatrixThunker(int i, RenderScript renderscript)
+ {
+ super(i, renderscript);
+ }
+
+ public static ScriptIntrinsicColorMatrixThunker create(RenderScript renderscript, Element element)
+ {
+ RenderScriptThunker renderscriptthunker = (RenderScriptThunker)renderscript;
+ ElementThunker elementthunker = (ElementThunker)element;
+ ScriptIntrinsicColorMatrixThunker scriptintrinsiccolormatrixthunker = new ScriptIntrinsicColorMatrixThunker(0, renderscript);
+ try
+ {
+ scriptintrinsiccolormatrixthunker.mN = ScriptIntrinsicColorMatrix.create(renderscriptthunker.mN, elementthunker.getNObj());
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return scriptintrinsiccolormatrixthunker;
+ }
+
+ public void forEach(Allocation allocation, Allocation allocation1)
+ {
+ AllocationThunker allocationthunker = (AllocationThunker)allocation;
+ AllocationThunker allocationthunker1 = (AllocationThunker)allocation1;
+ try
+ {
+ mN.forEach(allocationthunker.getNObj(), allocationthunker1.getNObj());
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public Script.KernelID getKernelID()
+ {
+ Script.KernelID kernelid = createKernelID(0, 3, null, null);
+ try
+ {
+ kernelid.mN = mN.getKernelID();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return kernelid;
+ }
+
+ volatile BaseObj getNObj()
+ {
+ return getNObj();
+ }
+
+ volatile Script getNObj()
+ {
+ return getNObj();
+ }
+
+ ScriptIntrinsicColorMatrix getNObj()
+ {
+ return mN;
+ }
+
+ public void setColorMatrix(android.support.v8.renderscript.Matrix3f matrix3f)
+ {
+ try
+ {
+ mN.setColorMatrix(new Matrix3f(matrix3f.getArray()));
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void setColorMatrix(android.support.v8.renderscript.Matrix4f matrix4f)
+ {
+ try
+ {
+ mN.setColorMatrix(new Matrix4f(matrix4f.getArray()));
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void setGreyscale()
+ {
+ try
+ {
+ mN.setGreyscale();
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void setRGBtoYUV()
+ {
+ try
+ {
+ mN.setRGBtoYUV();
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void setYUVtoRGB()
+ {
+ try
+ {
+ mN.setYUVtoRGB();
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ ScriptIntrinsicColorMatrix mN;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicConvolve3x3.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicConvolve3x3.java
new file mode 100644
index 0000000..608e354
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicConvolve3x3.java
@@ -0,0 +1,82 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+// Referenced classes of package android.support.v8.renderscript:
+// ScriptIntrinsic, RenderScript, RenderScriptThunker, ScriptIntrinsicConvolve3x3Thunker,
+// Element, RSIllegalArgumentException, FieldPacker, Allocation
+
+public class ScriptIntrinsicConvolve3x3 extends ScriptIntrinsic
+{
+
+ ScriptIntrinsicConvolve3x3(int i, RenderScript renderscript)
+ {
+ super(i, renderscript);
+ }
+
+ public static ScriptIntrinsicConvolve3x3 create(RenderScript renderscript, Element element)
+ {
+ Object obj;
+ if(RenderScript.isNative)
+ {
+ RenderScriptThunker _tmp = (RenderScriptThunker)renderscript;
+ obj = ScriptIntrinsicConvolve3x3Thunker.create(renderscript, element);
+ } else
+ {
+ float af[] = new float[9];
+ af[0] = 0.0F;
+ af[1] = 0.0F;
+ af[2] = 0.0F;
+ af[3] = 0.0F;
+ af[4] = 1.0F;
+ af[5] = 0.0F;
+ af[6] = 0.0F;
+ af[7] = 0.0F;
+ af[8] = 0.0F;
+ if(!element.isCompatible(Element.U8_4(renderscript)))
+ throw new RSIllegalArgumentException("Unsuported element type.");
+ obj = new ScriptIntrinsicConvolve3x3(renderscript.nScriptIntrinsicCreate(1, element.getID(renderscript)), renderscript);
+ ((ScriptIntrinsicConvolve3x3) (obj)).setCoefficients(af);
+ }
+ return ((ScriptIntrinsicConvolve3x3) (obj));
+ }
+
+ public void forEach(Allocation allocation)
+ {
+ forEach(0, null, allocation, null);
+ }
+
+ public Script.FieldID getFieldID_Input()
+ {
+ return createFieldID(1, null);
+ }
+
+ public Script.KernelID getKernelID()
+ {
+ return createKernelID(0, 2, null, null);
+ }
+
+ public void setCoefficients(float af[])
+ {
+ FieldPacker fieldpacker = new FieldPacker(36);
+ for(int i = 0; i < mValues.length; i++)
+ {
+ mValues[i] = af[i];
+ fieldpacker.addF32(mValues[i]);
+ }
+
+ setVar(0, fieldpacker);
+ }
+
+ public void setInput(Allocation allocation)
+ {
+ mInput = allocation;
+ setVar(1, allocation);
+ }
+
+ private Allocation mInput;
+ private final float mValues[] = new float[9];
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicConvolve3x3Thunker.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicConvolve3x3Thunker.java
new file mode 100644
index 0000000..69e23d2
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicConvolve3x3Thunker.java
@@ -0,0 +1,122 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+import android.renderscript.*;
+
+// Referenced classes of package android.support.v8.renderscript:
+// ScriptIntrinsicConvolve3x3, RenderScriptThunker, ElementThunker, ExceptionThunker,
+// AllocationThunker, RenderScript, Element, Allocation
+
+class ScriptIntrinsicConvolve3x3Thunker extends android.support.v8.renderscript.ScriptIntrinsicConvolve3x3
+{
+
+ ScriptIntrinsicConvolve3x3Thunker(int i, RenderScript renderscript)
+ {
+ super(i, renderscript);
+ }
+
+ public static ScriptIntrinsicConvolve3x3Thunker create(RenderScript renderscript, Element element)
+ {
+ RenderScriptThunker renderscriptthunker = (RenderScriptThunker)renderscript;
+ ElementThunker elementthunker = (ElementThunker)element;
+ ScriptIntrinsicConvolve3x3Thunker scriptintrinsicconvolve3x3thunker = new ScriptIntrinsicConvolve3x3Thunker(0, renderscript);
+ try
+ {
+ scriptintrinsicconvolve3x3thunker.mN = ScriptIntrinsicConvolve3x3.create(renderscriptthunker.mN, elementthunker.getNObj());
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return scriptintrinsicconvolve3x3thunker;
+ }
+
+ public void forEach(Allocation allocation)
+ {
+ AllocationThunker allocationthunker = (AllocationThunker)allocation;
+ try
+ {
+ mN.forEach(allocationthunker.getNObj());
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public Script.FieldID getFieldID_Input()
+ {
+ Script.FieldID fieldid = createFieldID(1, null);
+ try
+ {
+ fieldid.mN = mN.getFieldID_Input();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return fieldid;
+ }
+
+ public Script.KernelID getKernelID()
+ {
+ Script.KernelID kernelid = createKernelID(0, 2, null, null);
+ try
+ {
+ kernelid.mN = mN.getKernelID();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return kernelid;
+ }
+
+ volatile BaseObj getNObj()
+ {
+ return getNObj();
+ }
+
+ volatile Script getNObj()
+ {
+ return getNObj();
+ }
+
+ ScriptIntrinsicConvolve3x3 getNObj()
+ {
+ return mN;
+ }
+
+ public void setCoefficients(float af[])
+ {
+ try
+ {
+ mN.setCoefficients(af);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void setInput(Allocation allocation)
+ {
+ AllocationThunker allocationthunker = (AllocationThunker)allocation;
+ try
+ {
+ mN.setInput(allocationthunker.getNObj());
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ ScriptIntrinsicConvolve3x3 mN;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicConvolve5x5.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicConvolve5x5.java
new file mode 100644
index 0000000..d246242
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicConvolve5x5.java
@@ -0,0 +1,69 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+// Referenced classes of package android.support.v8.renderscript:
+// ScriptIntrinsic, RenderScript, RenderScriptThunker, ScriptIntrinsicConvolve5x5Thunker,
+// Element, FieldPacker, Allocation
+
+public class ScriptIntrinsicConvolve5x5 extends ScriptIntrinsic
+{
+
+ ScriptIntrinsicConvolve5x5(int i, RenderScript renderscript)
+ {
+ super(i, renderscript);
+ }
+
+ public static ScriptIntrinsicConvolve5x5 create(RenderScript renderscript, Element element)
+ {
+ Object obj;
+ if(RenderScript.isNative)
+ {
+ RenderScriptThunker _tmp = (RenderScriptThunker)renderscript;
+ obj = ScriptIntrinsicConvolve5x5Thunker.create(renderscript, element);
+ } else
+ {
+ obj = new ScriptIntrinsicConvolve5x5(renderscript.nScriptIntrinsicCreate(4, element.getID(renderscript)), renderscript);
+ }
+ return ((ScriptIntrinsicConvolve5x5) (obj));
+ }
+
+ public void forEach(Allocation allocation)
+ {
+ forEach(0, null, allocation, null);
+ }
+
+ public Script.FieldID getFieldID_Input()
+ {
+ return createFieldID(1, null);
+ }
+
+ public Script.KernelID getKernelID()
+ {
+ return createKernelID(0, 2, null, null);
+ }
+
+ public void setCoefficients(float af[])
+ {
+ FieldPacker fieldpacker = new FieldPacker(100);
+ for(int i = 0; i < mValues.length; i++)
+ {
+ mValues[i] = af[i];
+ fieldpacker.addF32(mValues[i]);
+ }
+
+ setVar(0, fieldpacker);
+ }
+
+ public void setInput(Allocation allocation)
+ {
+ mInput = allocation;
+ setVar(1, allocation);
+ }
+
+ private Allocation mInput;
+ private final float mValues[] = new float[25];
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicConvolve5x5Thunker.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicConvolve5x5Thunker.java
new file mode 100644
index 0000000..9ba93ad
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicConvolve5x5Thunker.java
@@ -0,0 +1,122 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+import android.renderscript.*;
+
+// Referenced classes of package android.support.v8.renderscript:
+// ScriptIntrinsicConvolve5x5, RenderScriptThunker, ElementThunker, ExceptionThunker,
+// AllocationThunker, RenderScript, Element, Allocation
+
+class ScriptIntrinsicConvolve5x5Thunker extends android.support.v8.renderscript.ScriptIntrinsicConvolve5x5
+{
+
+ ScriptIntrinsicConvolve5x5Thunker(int i, RenderScript renderscript)
+ {
+ super(i, renderscript);
+ }
+
+ public static ScriptIntrinsicConvolve5x5Thunker create(RenderScript renderscript, Element element)
+ {
+ RenderScriptThunker renderscriptthunker = (RenderScriptThunker)renderscript;
+ ElementThunker elementthunker = (ElementThunker)element;
+ ScriptIntrinsicConvolve5x5Thunker scriptintrinsicconvolve5x5thunker = new ScriptIntrinsicConvolve5x5Thunker(0, renderscript);
+ try
+ {
+ scriptintrinsicconvolve5x5thunker.mN = ScriptIntrinsicConvolve5x5.create(renderscriptthunker.mN, elementthunker.getNObj());
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return scriptintrinsicconvolve5x5thunker;
+ }
+
+ public void forEach(Allocation allocation)
+ {
+ AllocationThunker allocationthunker = (AllocationThunker)allocation;
+ try
+ {
+ mN.forEach(allocationthunker.getNObj());
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public Script.FieldID getFieldID_Input()
+ {
+ Script.FieldID fieldid = createFieldID(1, null);
+ try
+ {
+ fieldid.mN = mN.getFieldID_Input();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return fieldid;
+ }
+
+ public Script.KernelID getKernelID()
+ {
+ Script.KernelID kernelid = createKernelID(0, 2, null, null);
+ try
+ {
+ kernelid.mN = mN.getKernelID();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return kernelid;
+ }
+
+ volatile BaseObj getNObj()
+ {
+ return getNObj();
+ }
+
+ volatile Script getNObj()
+ {
+ return getNObj();
+ }
+
+ ScriptIntrinsicConvolve5x5 getNObj()
+ {
+ return mN;
+ }
+
+ public void setCoefficients(float af[])
+ {
+ try
+ {
+ mN.setCoefficients(af);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void setInput(Allocation allocation)
+ {
+ AllocationThunker allocationthunker = (AllocationThunker)allocation;
+ try
+ {
+ mN.setInput(allocationthunker.getNObj());
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ ScriptIntrinsicConvolve5x5 mN;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicLUT.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicLUT.java
new file mode 100644
index 0000000..6aa0fe2
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicLUT.java
@@ -0,0 +1,102 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+// Referenced classes of package android.support.v8.renderscript:
+// ScriptIntrinsic, Matrix4f, RenderScript, RenderScriptThunker,
+// ScriptIntrinsicLUTThunker, Element, Allocation, RSIllegalArgumentException
+
+public class ScriptIntrinsicLUT extends ScriptIntrinsic
+{
+
+ protected ScriptIntrinsicLUT(int i, RenderScript renderscript)
+ {
+ super(i, renderscript);
+ mDirty = true;
+ }
+
+ public static ScriptIntrinsicLUT create(RenderScript renderscript, Element element)
+ {
+ Object obj;
+ if(RenderScript.isNative)
+ {
+ RenderScriptThunker _tmp = (RenderScriptThunker)renderscript;
+ obj = ScriptIntrinsicLUTThunker.create(renderscript, element);
+ } else
+ {
+ obj = new ScriptIntrinsicLUT(renderscript.nScriptIntrinsicCreate(3, element.getID(renderscript)), renderscript);
+ obj.mTables = Allocation.createSized(renderscript, Element.U8(renderscript), 1024);
+ for(int i = 0; i < 256; i++)
+ {
+ ((ScriptIntrinsicLUT) (obj)).mCache[i] = (byte)i;
+ ((ScriptIntrinsicLUT) (obj)).mCache[i + 256] = (byte)i;
+ ((ScriptIntrinsicLUT) (obj)).mCache[i + 512] = (byte)i;
+ ((ScriptIntrinsicLUT) (obj)).mCache[i + 768] = (byte)i;
+ }
+
+ ((ScriptIntrinsicLUT) (obj)).setVar(0, ((ScriptIntrinsicLUT) (obj)).mTables);
+ }
+ return ((ScriptIntrinsicLUT) (obj));
+ }
+
+ private void validate(int i, int j)
+ {
+ if(i < 0 || i > 255)
+ throw new RSIllegalArgumentException("Index out of range (0-255).");
+ if(j < 0 || j > 255)
+ throw new RSIllegalArgumentException("Value out of range (0-255).");
+ else
+ return;
+ }
+
+ public void forEach(Allocation allocation, Allocation allocation1)
+ {
+ if(mDirty)
+ {
+ mDirty = false;
+ mTables.copyFromUnchecked(mCache);
+ }
+ forEach(0, allocation, allocation1, null);
+ }
+
+ public Script.KernelID getKernelID()
+ {
+ return createKernelID(0, 3, null, null);
+ }
+
+ public void setAlpha(int i, int j)
+ {
+ validate(i, j);
+ mCache[i + 768] = (byte)j;
+ mDirty = true;
+ }
+
+ public void setBlue(int i, int j)
+ {
+ validate(i, j);
+ mCache[i + 512] = (byte)j;
+ mDirty = true;
+ }
+
+ public void setGreen(int i, int j)
+ {
+ validate(i, j);
+ mCache[i + 256] = (byte)j;
+ mDirty = true;
+ }
+
+ public void setRed(int i, int j)
+ {
+ validate(i, j);
+ mCache[i] = (byte)j;
+ mDirty = true;
+ }
+
+ private final byte mCache[] = new byte[1024];
+ private boolean mDirty;
+ private final Matrix4f mMatrix = new Matrix4f();
+ private Allocation mTables;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicLUTThunker.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicLUTThunker.java
new file mode 100644
index 0000000..f4763c5
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicLUTThunker.java
@@ -0,0 +1,134 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+import android.renderscript.*;
+
+// Referenced classes of package android.support.v8.renderscript:
+// ScriptIntrinsicLUT, RenderScriptThunker, ElementThunker, ExceptionThunker,
+// AllocationThunker, RenderScript, Element, Allocation
+
+class ScriptIntrinsicLUTThunker extends android.support.v8.renderscript.ScriptIntrinsicLUT
+{
+
+ private ScriptIntrinsicLUTThunker(int i, RenderScript renderscript)
+ {
+ super(i, renderscript);
+ }
+
+ public static ScriptIntrinsicLUTThunker create(RenderScript renderscript, Element element)
+ {
+ RenderScriptThunker renderscriptthunker = (RenderScriptThunker)renderscript;
+ ElementThunker elementthunker = (ElementThunker)element;
+ ScriptIntrinsicLUTThunker scriptintrinsiclutthunker = new ScriptIntrinsicLUTThunker(0, renderscript);
+ try
+ {
+ scriptintrinsiclutthunker.mN = ScriptIntrinsicLUT.create(renderscriptthunker.mN, elementthunker.getNObj());
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return scriptintrinsiclutthunker;
+ }
+
+ public void forEach(Allocation allocation, Allocation allocation1)
+ {
+ AllocationThunker allocationthunker = (AllocationThunker)allocation;
+ AllocationThunker allocationthunker1 = (AllocationThunker)allocation1;
+ try
+ {
+ mN.forEach(allocationthunker.getNObj(), allocationthunker1.getNObj());
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public Script.KernelID getKernelID()
+ {
+ Script.KernelID kernelid = createKernelID(0, 3, null, null);
+ try
+ {
+ kernelid.mN = mN.getKernelID();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return kernelid;
+ }
+
+ volatile BaseObj getNObj()
+ {
+ return getNObj();
+ }
+
+ volatile Script getNObj()
+ {
+ return getNObj();
+ }
+
+ ScriptIntrinsicLUT getNObj()
+ {
+ return mN;
+ }
+
+ public void setAlpha(int i, int j)
+ {
+ try
+ {
+ mN.setAlpha(i, j);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void setBlue(int i, int j)
+ {
+ try
+ {
+ mN.setBlue(i, j);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void setGreen(int i, int j)
+ {
+ try
+ {
+ mN.setGreen(i, j);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public void setRed(int i, int j)
+ {
+ try
+ {
+ mN.setRed(i, j);
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ ScriptIntrinsicLUT mN;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicYuvToRGB.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicYuvToRGB.java
new file mode 100644
index 0000000..3ef3a0a
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicYuvToRGB.java
@@ -0,0 +1,56 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+// Referenced classes of package android.support.v8.renderscript:
+// ScriptIntrinsic, RenderScript, RenderScriptThunker, ScriptIntrinsicYuvToRGBThunker,
+// Element, Allocation
+
+public class ScriptIntrinsicYuvToRGB extends ScriptIntrinsic
+{
+
+ ScriptIntrinsicYuvToRGB(int i, RenderScript renderscript)
+ {
+ super(i, renderscript);
+ }
+
+ public static ScriptIntrinsicYuvToRGB create(RenderScript renderscript, Element element)
+ {
+ Object obj;
+ if(RenderScript.isNative)
+ {
+ RenderScriptThunker _tmp = (RenderScriptThunker)renderscript;
+ obj = ScriptIntrinsicYuvToRGBThunker.create(renderscript, element);
+ } else
+ {
+ obj = new ScriptIntrinsicYuvToRGB(renderscript.nScriptIntrinsicCreate(6, element.getID(renderscript)), renderscript);
+ }
+ return ((ScriptIntrinsicYuvToRGB) (obj));
+ }
+
+ public void forEach(Allocation allocation)
+ {
+ forEach(0, null, allocation, null);
+ }
+
+ public Script.FieldID getFieldID_Input()
+ {
+ return createFieldID(0, null);
+ }
+
+ public Script.KernelID getKernelID()
+ {
+ return createKernelID(0, 2, null, null);
+ }
+
+ public void setInput(Allocation allocation)
+ {
+ mInput = allocation;
+ setVar(0, allocation);
+ }
+
+ private Allocation mInput;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicYuvToRGBThunker.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicYuvToRGBThunker.java
new file mode 100644
index 0000000..bca7e80
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/ScriptIntrinsicYuvToRGBThunker.java
@@ -0,0 +1,109 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+import android.renderscript.*;
+
+// Referenced classes of package android.support.v8.renderscript:
+// ScriptIntrinsicYuvToRGB, RenderScriptThunker, ElementThunker, ExceptionThunker,
+// AllocationThunker, RenderScript, Element, Allocation
+
+public class ScriptIntrinsicYuvToRGBThunker extends android.support.v8.renderscript.ScriptIntrinsicYuvToRGB
+{
+
+ private ScriptIntrinsicYuvToRGBThunker(int i, RenderScript renderscript)
+ {
+ super(i, renderscript);
+ }
+
+ public static ScriptIntrinsicYuvToRGBThunker create(RenderScript renderscript, Element element)
+ {
+ RenderScriptThunker renderscriptthunker = (RenderScriptThunker)renderscript;
+ ElementThunker elementthunker = (ElementThunker)element;
+ ScriptIntrinsicYuvToRGBThunker scriptintrinsicyuvtorgbthunker = new ScriptIntrinsicYuvToRGBThunker(0, renderscript);
+ try
+ {
+ scriptintrinsicyuvtorgbthunker.mN = ScriptIntrinsicYuvToRGB.create(renderscriptthunker.mN, elementthunker.getNObj());
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return scriptintrinsicyuvtorgbthunker;
+ }
+
+ public void forEach(Allocation allocation)
+ {
+ AllocationThunker allocationthunker = (AllocationThunker)allocation;
+ try
+ {
+ mN.forEach(allocationthunker.getNObj());
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ public Script.FieldID getFieldID_Input()
+ {
+ Script.FieldID fieldid = createFieldID(0, null);
+ try
+ {
+ fieldid.mN = mN.getFieldID_Input();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return fieldid;
+ }
+
+ public Script.KernelID getKernelID()
+ {
+ Script.KernelID kernelid = createKernelID(0, 2, null, null);
+ try
+ {
+ kernelid.mN = mN.getKernelID();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return kernelid;
+ }
+
+ volatile BaseObj getNObj()
+ {
+ return getNObj();
+ }
+
+ volatile Script getNObj()
+ {
+ return getNObj();
+ }
+
+ ScriptIntrinsicYuvToRGB getNObj()
+ {
+ return mN;
+ }
+
+ public void setInput(Allocation allocation)
+ {
+ AllocationThunker allocationthunker = (AllocationThunker)allocation;
+ try
+ {
+ mN.setInput(allocationthunker.getNObj());
+ return;
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ }
+
+ ScriptIntrinsicYuvToRGB mN;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Short2.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Short2.java
new file mode 100644
index 0000000..9be8abe
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Short2.java
@@ -0,0 +1,23 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+public class Short2
+{
+
+ public Short2()
+ {
+ }
+
+ public Short2(short word0, short word1)
+ {
+ x = word0;
+ y = word1;
+ }
+
+ public short x;
+ public short y;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Short3.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Short3.java
new file mode 100644
index 0000000..80dfbbc
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Short3.java
@@ -0,0 +1,25 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+public class Short3
+{
+
+ public Short3()
+ {
+ }
+
+ public Short3(short word0, short word1, short word2)
+ {
+ x = word0;
+ y = word1;
+ z = word2;
+ }
+
+ public short x;
+ public short y;
+ public short z;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Short4.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Short4.java
new file mode 100644
index 0000000..90be96e
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Short4.java
@@ -0,0 +1,27 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+public class Short4
+{
+
+ public Short4()
+ {
+ }
+
+ public Short4(short word0, short word1, short word2, short word3)
+ {
+ x = word0;
+ y = word1;
+ z = word2;
+ w = word3;
+ }
+
+ public short w;
+ public short x;
+ public short y;
+ public short z;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Type.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Type.java
new file mode 100644
index 0000000..af5dc43
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/Type.java
@@ -0,0 +1,260 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+
+// Referenced classes of package android.support.v8.renderscript:
+// BaseObj, Element, RenderScript, RSInvalidStateException,
+// RenderScriptThunker, TypeThunker, RSIllegalArgumentException
+
+public class Type extends BaseObj
+{
+ public static class Builder
+ {
+
+ public Type create()
+ {
+ if(mDimZ > 0)
+ {
+ if(mDimX < 1 || mDimY < 1)
+ throw new RSInvalidStateException("Both X and Y dimension required when Z is present.");
+ if(mDimFaces)
+ throw new RSInvalidStateException("Cube maps not supported with 3D types.");
+ }
+ if(mDimY > 0 && mDimX < 1)
+ throw new RSInvalidStateException("X dimension required when Y is present.");
+ if(mDimFaces && mDimY < 1)
+ throw new RSInvalidStateException("Cube maps require 2D Types.");
+ if(mYuv != 0 && (mDimZ != 0 || mDimFaces || mDimMipmaps))
+ throw new RSInvalidStateException("YUV only supports basic 2D.");
+ RenderScript _tmp = mRS;
+ Type type;
+ if(RenderScript.isNative)
+ type = TypeThunker.create((RenderScriptThunker)mRS, mElement, mDimX, mDimY, mDimZ, mDimMipmaps, mDimFaces, mYuv);
+ else
+ type = new Type(mRS.nTypeCreate(mElement.getID(mRS), mDimX, mDimY, mDimZ, mDimMipmaps, mDimFaces, mYuv), mRS);
+ type.mElement = mElement;
+ type.mDimX = mDimX;
+ type.mDimY = mDimY;
+ type.mDimZ = mDimZ;
+ type.mDimMipmaps = mDimMipmaps;
+ type.mDimFaces = mDimFaces;
+ type.mDimYuv = mYuv;
+ type.calcElementCount();
+ return type;
+ }
+
+ public Builder setFaces(boolean flag)
+ {
+ mDimFaces = flag;
+ return this;
+ }
+
+ public Builder setMipmaps(boolean flag)
+ {
+ mDimMipmaps = flag;
+ return this;
+ }
+
+ public Builder setX(int i)
+ {
+ if(i < 1)
+ {
+ throw new RSIllegalArgumentException("Values of less than 1 for Dimension X are not valid.");
+ } else
+ {
+ mDimX = i;
+ return this;
+ }
+ }
+
+ public Builder setY(int i)
+ {
+ if(i < 1)
+ {
+ throw new RSIllegalArgumentException("Values of less than 1 for Dimension Y are not valid.");
+ } else
+ {
+ mDimY = i;
+ return this;
+ }
+ }
+
+ public Builder setYuvFormat(int i)
+ {
+ switch(i)
+ {
+ default:
+ throw new RSIllegalArgumentException("Only NV21 and YV12 are supported..");
+
+ case 17: // '\021'
+ case 842094169:
+ mYuv = i;
+ break;
+ }
+ return this;
+ }
+
+ public Builder setZ(int i)
+ {
+ if(i < 1)
+ {
+ throw new RSIllegalArgumentException("Values of less than 1 for Dimension Z are not valid.");
+ } else
+ {
+ mDimZ = i;
+ return this;
+ }
+ }
+
+ boolean mDimFaces;
+ boolean mDimMipmaps;
+ int mDimX;
+ int mDimY;
+ int mDimZ;
+ Element mElement;
+ RenderScript mRS;
+ int mYuv;
+
+ public Builder(RenderScript renderscript, Element element)
+ {
+ mDimX = 1;
+ element.checkValid();
+ mRS = renderscript;
+ mElement = element;
+ }
+ }
+
+ public static final class CubemapFace extends Enum
+ {
+
+ public static CubemapFace valueOf(String s)
+ {
+ return (CubemapFace)Enum.valueOf(android/support/v8/renderscript/Type$CubemapFace, s);
+ }
+
+ public static CubemapFace[] values()
+ {
+ return (CubemapFace[])$VALUES.clone();
+ }
+
+ private static final CubemapFace $VALUES[];
+ public static final CubemapFace NEGATIVE_X;
+ public static final CubemapFace NEGATIVE_Y;
+ public static final CubemapFace NEGATIVE_Z;
+ public static final CubemapFace POSITIVE_X;
+ public static final CubemapFace POSITIVE_Y;
+ public static final CubemapFace POSITIVE_Z;
+ int mID;
+
+ static
+ {
+ POSITIVE_X = new CubemapFace("POSITIVE_X", 0, 0);
+ NEGATIVE_X = new CubemapFace("NEGATIVE_X", 1, 1);
+ POSITIVE_Y = new CubemapFace("POSITIVE_Y", 2, 2);
+ NEGATIVE_Y = new CubemapFace("NEGATIVE_Y", 3, 3);
+ POSITIVE_Z = new CubemapFace("POSITIVE_Z", 4, 4);
+ NEGATIVE_Z = new CubemapFace("NEGATIVE_Z", 5, 5);
+ CubemapFace acubemapface[] = new CubemapFace[6];
+ acubemapface[0] = POSITIVE_X;
+ acubemapface[1] = NEGATIVE_X;
+ acubemapface[2] = POSITIVE_Y;
+ acubemapface[3] = NEGATIVE_Y;
+ acubemapface[4] = POSITIVE_Z;
+ acubemapface[5] = NEGATIVE_Z;
+ $VALUES = acubemapface;
+ }
+
+ private CubemapFace(String s, int i, int j)
+ {
+ super(s, i);
+ mID = j;
+ }
+ }
+
+
+ Type(int i, RenderScript renderscript)
+ {
+ super(i, renderscript);
+ }
+
+ void calcElementCount()
+ {
+ boolean flag = hasMipmaps();
+ int i = getX();
+ int j = getY();
+ int k = getZ();
+ byte byte0 = 1;
+ if(hasFaces())
+ byte0 = 6;
+ if(i == 0)
+ i = 1;
+ if(j == 0)
+ j = 1;
+ if(k == 0)
+ k = 1;
+ int l;
+ for(l = byte0 * (k * (i * j)); flag && (i > 1 || j > 1 || k > 1); l += byte0 * (k * (i * j)))
+ {
+ if(i > 1)
+ i >>= 1;
+ if(j > 1)
+ j >>= 1;
+ if(k > 1)
+ k >>= 1;
+ }
+
+ mElementCount = l;
+ }
+
+ public int getCount()
+ {
+ return mElementCount;
+ }
+
+ public Element getElement()
+ {
+ return mElement;
+ }
+
+ public int getX()
+ {
+ return mDimX;
+ }
+
+ public int getY()
+ {
+ return mDimY;
+ }
+
+ public int getYuv()
+ {
+ return mDimYuv;
+ }
+
+ public int getZ()
+ {
+ return mDimZ;
+ }
+
+ public boolean hasFaces()
+ {
+ return mDimFaces;
+ }
+
+ public boolean hasMipmaps()
+ {
+ return mDimMipmaps;
+ }
+
+ boolean mDimFaces;
+ boolean mDimMipmaps;
+ int mDimX;
+ int mDimY;
+ int mDimYuv;
+ int mDimZ;
+ Element mElement;
+ int mElementCount;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/TypeThunker.java b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/TypeThunker.java
new file mode 100644
index 0000000..48e3e54
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/android/support/v8/renderscript/TypeThunker.java
@@ -0,0 +1,100 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package android.support.v8.renderscript;
+
+import android.renderscript.*;
+import java.util.HashMap;
+
+// Referenced classes of package android.support.v8.renderscript:
+// Type, ElementThunker, ExceptionThunker, RenderScriptThunker,
+// RenderScript, Element
+
+class TypeThunker extends android.support.v8.renderscript.Type
+{
+
+ TypeThunker(RenderScript renderscript, Type type)
+ {
+ super(0, renderscript);
+ mN = type;
+ try
+ {
+ internalCalc();
+ mElement = new ElementThunker(renderscript, type.getElement());
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ synchronized(mMap)
+ {
+ mMap.put(mN, this);
+ }
+ return;
+ exception;
+ hashmap;
+ JVM INSTR monitorexit ;
+ throw exception;
+ }
+
+ static android.support.v8.renderscript.Type create(RenderScript renderscript, Element element, int i, int j, int k, boolean flag, boolean flag1, int l)
+ {
+ ElementThunker elementthunker = (ElementThunker)element;
+ RenderScriptThunker renderscriptthunker = (RenderScriptThunker)renderscript;
+ TypeThunker typethunker;
+ try
+ {
+ android.renderscript.Type.Builder builder = new android.renderscript.Type.Builder(renderscriptthunker.mN, elementthunker.mN);
+ if(i > 0)
+ builder.setX(i);
+ if(j > 0)
+ builder.setY(j);
+ if(k > 0)
+ builder.setZ(k);
+ if(flag)
+ builder.setMipmaps(flag);
+ if(flag1)
+ builder.setFaces(flag1);
+ if(l > 0)
+ builder.setYuvFormat(l);
+ typethunker = new TypeThunker(renderscript, builder.create());
+ typethunker.internalCalc();
+ }
+ catch(RSRuntimeException rsruntimeexception)
+ {
+ throw ExceptionThunker.convertException(rsruntimeexception);
+ }
+ return typethunker;
+ }
+
+ static android.support.v8.renderscript.Type find(Type type)
+ {
+ return (android.support.v8.renderscript.Type)mMap.get(type);
+ }
+
+ volatile BaseObj getNObj()
+ {
+ return getNObj();
+ }
+
+ Type getNObj()
+ {
+ return mN;
+ }
+
+ void internalCalc()
+ {
+ mDimX = mN.getX();
+ mDimY = mN.getY();
+ mDimZ = mN.getZ();
+ mDimFaces = mN.hasFaces();
+ mDimMipmaps = mN.hasMipmaps();
+ mDimYuv = mN.getYuv();
+ calcElementCount();
+ }
+
+ static HashMap mMap = new HashMap();
+ Type mN;
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/AsyncAppender.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/AsyncAppender.java
new file mode 100644
index 0000000..4bb79c1
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/AsyncAppender.java
@@ -0,0 +1,59 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic;
+
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.AsyncAppenderBase;
+
+// Referenced classes of package ch.qos.logback.classic:
+// Level
+
+public class AsyncAppender extends AsyncAppenderBase
+{
+
+ public AsyncAppender()
+ {
+ includeCallerData = false;
+ }
+
+ protected boolean isDiscardable(ILoggingEvent iloggingevent)
+ {
+ boolean flag;
+ if(iloggingevent.getLevel().toInt() <= 20000)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ protected volatile boolean isDiscardable(Object obj)
+ {
+ return isDiscardable((ILoggingEvent)obj);
+ }
+
+ public boolean isIncludeCallerData()
+ {
+ return includeCallerData;
+ }
+
+ protected void preprocess(ILoggingEvent iloggingevent)
+ {
+ iloggingevent.prepareForDeferredProcessing();
+ if(includeCallerData)
+ iloggingevent.getCallerData();
+ }
+
+ protected volatile void preprocess(Object obj)
+ {
+ preprocess((ILoggingEvent)obj);
+ }
+
+ public void setIncludeCallerData(boolean flag)
+ {
+ includeCallerData = flag;
+ }
+
+ boolean includeCallerData;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/BasicConfigurator.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/BasicConfigurator.java
new file mode 100644
index 0000000..d4bb72c
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/BasicConfigurator.java
@@ -0,0 +1,47 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic;
+
+import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
+import ch.qos.logback.core.ConsoleAppender;
+import ch.qos.logback.core.status.InfoStatus;
+import ch.qos.logback.core.status.StatusManager;
+import org.slf4j.LoggerFactory;
+
+// Referenced classes of package ch.qos.logback.classic:
+// LoggerContext, Logger
+
+public class BasicConfigurator
+{
+
+ private BasicConfigurator()
+ {
+ }
+
+ public static void configure(LoggerContext loggercontext)
+ {
+ StatusManager statusmanager = loggercontext.getStatusManager();
+ if(statusmanager != null)
+ statusmanager.add(new InfoStatus("Setting up default configuration.", loggercontext));
+ ConsoleAppender consoleappender = new ConsoleAppender();
+ consoleappender.setContext(loggercontext);
+ consoleappender.setName("console");
+ PatternLayoutEncoder patternlayoutencoder = new PatternLayoutEncoder();
+ patternlayoutencoder.setContext(loggercontext);
+ patternlayoutencoder.setPattern("%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n");
+ patternlayoutencoder.start();
+ consoleappender.setEncoder(patternlayoutencoder);
+ consoleappender.start();
+ loggercontext.getLogger("ROOT").addAppender(consoleappender);
+ }
+
+ public static void configureDefaultContext()
+ {
+ configure((LoggerContext)LoggerFactory.getILoggerFactory());
+ }
+
+ static final BasicConfigurator hiddenSingleton = new BasicConfigurator();
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/ClassicConstants.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/ClassicConstants.java
new file mode 100644
index 0000000..b44a68f
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/ClassicConstants.java
@@ -0,0 +1,23 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic;
+
+import org.slf4j.Marker;
+import org.slf4j.MarkerFactory;
+
+public class ClassicConstants
+{
+
+ public ClassicConstants()
+ {
+ }
+
+ public static final int DEFAULT_MAX_CALLEDER_DATA_DEPTH = 8;
+ public static final String FINALIZE_SESSION = "FINALIZE_SESSION";
+ public static final Marker FINALIZE_SESSION_MARKER = MarkerFactory.getMarker("FINALIZE_SESSION");
+ public static final String LOGBACK_CONTEXT_SELECTOR = "logback.ContextSelector";
+ public static final int MAX_DOTS = 16;
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/Level.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/Level.java
new file mode 100644
index 0000000..e27922b
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/Level.java
@@ -0,0 +1,255 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic;
+
+import java.io.Serializable;
+
+public final class Level
+ implements Serializable
+{
+
+ private Level(int i, String s)
+ {
+ levelInt = i;
+ levelStr = s;
+ }
+
+ public static Level fromLocationAwareLoggerInteger(int i)
+ {
+ i;
+ JVM INSTR lookupswitch 5: default 52
+ // 0: 79
+ // 10: 85
+ // 20: 92
+ // 30: 99
+ // 40: 106;
+ goto _L1 _L2 _L3 _L4 _L5 _L6
+_L1:
+ throw new IllegalArgumentException((new StringBuilder()).append(i).append(" not a valid level value").toString());
+_L2:
+ Level level = TRACE;
+_L8:
+ return level;
+_L3:
+ level = DEBUG;
+ continue; /* Loop/switch isn't completed */
+_L4:
+ level = INFO;
+ continue; /* Loop/switch isn't completed */
+_L5:
+ level = WARN;
+ continue; /* Loop/switch isn't completed */
+_L6:
+ level = ERROR;
+ if(true) goto _L8; else goto _L7
+_L7:
+ }
+
+ private Object readResolve()
+ {
+ return toLevel(levelInt);
+ }
+
+ public static Level toLevel(int i)
+ {
+ return toLevel(i, DEBUG);
+ }
+
+ public static Level toLevel(int i, Level level)
+ {
+ i;
+ JVM INSTR lookupswitch 7: default 68
+ // -2147483648: 70
+ // 5000: 77
+ // 10000: 84
+ // 20000: 91
+ // 30000: 98
+ // 40000: 105
+ // 2147483647: 112;
+ goto _L1 _L2 _L3 _L4 _L5 _L6 _L7 _L8
+_L1:
+ return level;
+_L2:
+ level = ALL;
+ continue; /* Loop/switch isn't completed */
+_L3:
+ level = TRACE;
+ continue; /* Loop/switch isn't completed */
+_L4:
+ level = DEBUG;
+ continue; /* Loop/switch isn't completed */
+_L5:
+ level = INFO;
+ continue; /* Loop/switch isn't completed */
+_L6:
+ level = WARN;
+ continue; /* Loop/switch isn't completed */
+_L7:
+ level = ERROR;
+ continue; /* Loop/switch isn't completed */
+_L8:
+ level = OFF;
+ if(true) goto _L1; else goto _L9
+_L9:
+ }
+
+ public static Level toLevel(String s)
+ {
+ return toLevel(s, DEBUG);
+ }
+
+ public static Level toLevel(String s, Level level)
+ {
+ if(s != null) goto _L2; else goto _L1
+_L1:
+ return level;
+_L2:
+ if(s.equalsIgnoreCase("ALL"))
+ level = ALL;
+ else
+ if(s.equalsIgnoreCase("TRACE"))
+ level = TRACE;
+ else
+ if(s.equalsIgnoreCase("DEBUG"))
+ level = DEBUG;
+ else
+ if(s.equalsIgnoreCase("INFO"))
+ level = INFO;
+ else
+ if(s.equalsIgnoreCase("WARN"))
+ level = WARN;
+ else
+ if(s.equalsIgnoreCase("ERROR"))
+ level = ERROR;
+ else
+ if(s.equalsIgnoreCase("OFF"))
+ level = OFF;
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ public static int toLocationAwareLoggerInteger(Level level)
+ {
+ if(level == null)
+ throw new IllegalArgumentException("null level parameter is not admitted");
+ level.toInt();
+ JVM INSTR lookupswitch 5: default 68
+ // 5000: 95
+ // 10000: 99
+ // 20000: 105
+ // 30000: 111
+ // 40000: 117;
+ goto _L1 _L2 _L3 _L4 _L5 _L6
+_L1:
+ throw new IllegalArgumentException((new StringBuilder()).append(level).append(" not a valid level value").toString());
+_L2:
+ int i = 0;
+_L8:
+ return i;
+_L3:
+ i = 10;
+ continue; /* Loop/switch isn't completed */
+_L4:
+ i = 20;
+ continue; /* Loop/switch isn't completed */
+_L5:
+ i = 30;
+ continue; /* Loop/switch isn't completed */
+_L6:
+ i = 40;
+ if(true) goto _L8; else goto _L7
+_L7:
+ }
+
+ public static Level valueOf(String s)
+ {
+ return toLevel(s, DEBUG);
+ }
+
+ public boolean isGreaterOrEqual(Level level)
+ {
+ boolean flag;
+ if(levelInt >= level.levelInt)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ public int toInt()
+ {
+ return levelInt;
+ }
+
+ public Integer toInteger()
+ {
+ levelInt;
+ JVM INSTR lookupswitch 7: default 72
+ // -2147483648: 119
+ // 5000: 125
+ // 10000: 132
+ // 20000: 139
+ // 30000: 146
+ // 40000: 153
+ // 2147483647: 160;
+ goto _L1 _L2 _L3 _L4 _L5 _L6 _L7 _L8
+_L1:
+ throw new IllegalStateException((new StringBuilder()).append("Level ").append(levelStr).append(", ").append(levelInt).append(" is unknown.").toString());
+_L2:
+ Integer integer = ALL_INTEGER;
+_L10:
+ return integer;
+_L3:
+ integer = TRACE_INTEGER;
+ continue; /* Loop/switch isn't completed */
+_L4:
+ integer = DEBUG_INTEGER;
+ continue; /* Loop/switch isn't completed */
+_L5:
+ integer = INFO_INTEGER;
+ continue; /* Loop/switch isn't completed */
+_L6:
+ integer = WARN_INTEGER;
+ continue; /* Loop/switch isn't completed */
+_L7:
+ integer = ERROR_INTEGER;
+ continue; /* Loop/switch isn't completed */
+_L8:
+ integer = OFF_INTEGER;
+ if(true) goto _L10; else goto _L9
+_L9:
+ }
+
+ public String toString()
+ {
+ return levelStr;
+ }
+
+ public static final Level ALL = new Level(0x80000000, "ALL");
+ public static final int ALL_INT = 0x80000000;
+ public static final Integer ALL_INTEGER = Integer.valueOf(0x80000000);
+ public static final Level DEBUG = new Level(10000, "DEBUG");
+ public static final int DEBUG_INT = 10000;
+ public static final Integer DEBUG_INTEGER = Integer.valueOf(10000);
+ public static final Level ERROR = new Level(40000, "ERROR");
+ public static final int ERROR_INT = 40000;
+ public static final Integer ERROR_INTEGER = Integer.valueOf(40000);
+ public static final Level INFO = new Level(20000, "INFO");
+ public static final int INFO_INT = 20000;
+ public static final Integer INFO_INTEGER = Integer.valueOf(20000);
+ public static final Level OFF = new Level(0x7fffffff, "OFF");
+ public static final int OFF_INT = 0x7fffffff;
+ public static final Integer OFF_INTEGER = Integer.valueOf(0x7fffffff);
+ public static final Level TRACE = new Level(5000, "TRACE");
+ public static final int TRACE_INT = 5000;
+ public static final Integer TRACE_INTEGER = Integer.valueOf(5000);
+ public static final Level WARN = new Level(30000, "WARN");
+ public static final int WARN_INT = 30000;
+ public static final Integer WARN_INTEGER = Integer.valueOf(30000);
+ private static final long serialVersionUID = 0xf4b3c2f0fcd34c67L;
+ public final int levelInt;
+ public final String levelStr;
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/Logger.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/Logger.java
new file mode 100644
index 0000000..e7a97c9
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/Logger.java
@@ -0,0 +1,826 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic;
+
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.util.LoggerNameUtil;
+import ch.qos.logback.core.Appender;
+import ch.qos.logback.core.spi.AppenderAttachable;
+import ch.qos.logback.core.spi.AppenderAttachableImpl;
+import ch.qos.logback.core.spi.FilterReply;
+import java.io.ObjectStreamException;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Marker;
+import org.slf4j.spi.LocationAwareLogger;
+
+// Referenced classes of package ch.qos.logback.classic:
+// LoggerContext, Level
+
+public final class Logger
+ implements org.slf4j.Logger, LocationAwareLogger, AppenderAttachable, Serializable
+{
+
+ Logger(String s, Logger logger, LoggerContext loggercontext)
+ {
+ additive = true;
+ name = s;
+ parent = logger;
+ loggerContext = loggercontext;
+ }
+
+ private int appendLoopOnAppenders(ILoggingEvent iloggingevent)
+ {
+ int i;
+ if(aai != null)
+ i = aai.appendLoopOnAppenders(iloggingevent);
+ else
+ i = 0;
+ return i;
+ }
+
+ private void buildLoggingEventAndAppend(String s, Marker marker, Level level1, String s1, Object aobj[], Throwable throwable)
+ {
+ LoggingEvent loggingevent = new LoggingEvent(s, this, level1, s1, throwable, aobj);
+ loggingevent.setMarker(marker);
+ callAppenders(loggingevent);
+ }
+
+ private FilterReply callTurboFilters(Marker marker, Level level1)
+ {
+ return loggerContext.getTurboFilterChainDecision_0_3OrMore(marker, this, level1, null, null, null);
+ }
+
+ private void filterAndLog_0_Or3Plus(String s, Marker marker, Level level1, String s1, Object aobj[], Throwable throwable)
+ {
+ FilterReply filterreply = loggerContext.getTurboFilterChainDecision_0_3OrMore(marker, this, level1, s1, aobj, throwable);
+ if(filterreply != FilterReply.NEUTRAL ? filterreply != FilterReply.DENY : effectiveLevelInt <= level1.levelInt)
+ buildLoggingEventAndAppend(s, marker, level1, s1, aobj, throwable);
+ }
+
+ private void filterAndLog_1(String s, Marker marker, Level level1, String s1, Object obj, Throwable throwable)
+ {
+ FilterReply filterreply = loggerContext.getTurboFilterChainDecision_1(marker, this, level1, s1, obj, throwable);
+ if(filterreply != FilterReply.NEUTRAL ? filterreply != FilterReply.DENY : effectiveLevelInt <= level1.levelInt)
+ {
+ Object aobj[] = new Object[1];
+ aobj[0] = obj;
+ buildLoggingEventAndAppend(s, marker, level1, s1, aobj, throwable);
+ }
+ }
+
+ private void filterAndLog_2(String s, Marker marker, Level level1, String s1, Object obj, Object obj1, Throwable throwable)
+ {
+ FilterReply filterreply = loggerContext.getTurboFilterChainDecision_2(marker, this, level1, s1, obj, obj1, throwable);
+ if(filterreply != FilterReply.NEUTRAL ? filterreply != FilterReply.DENY : effectiveLevelInt <= level1.levelInt)
+ {
+ Object aobj[] = new Object[2];
+ aobj[0] = obj;
+ aobj[1] = obj1;
+ buildLoggingEventAndAppend(s, marker, level1, s1, aobj, throwable);
+ }
+ }
+
+ /**
+ * @deprecated Method handleParentLevelChange is deprecated
+ */
+
+ private void handleParentLevelChange(int i)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ int j;
+ int k;
+ if(level != null)
+ break MISSING_BLOCK_LABEL_64;
+ effectiveLevelInt = i;
+ if(childrenList == null)
+ break MISSING_BLOCK_LABEL_64;
+ j = childrenList.size();
+ k = 0;
+_L1:
+ if(k >= j)
+ break MISSING_BLOCK_LABEL_64;
+ ((Logger)childrenList.get(k)).handleParentLevelChange(i);
+ k++;
+ goto _L1
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ private boolean isRootLogger()
+ {
+ boolean flag;
+ if(parent == null)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ private void localLevelReset()
+ {
+ effectiveLevelInt = 10000;
+ if(isRootLogger())
+ level = Level.DEBUG;
+ else
+ level = null;
+ }
+
+ /**
+ * @deprecated Method addAppender is deprecated
+ */
+
+ public void addAppender(Appender appender)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ if(aai == null)
+ aai = new AppenderAttachableImpl();
+ aai.addAppender(appender);
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ public void callAppenders(ILoggingEvent iloggingevent)
+ {
+ int i = 0;
+ Logger logger = this;
+ do
+ {
+label0:
+ {
+ if(logger != null)
+ {
+ i += logger.appendLoopOnAppenders(iloggingevent);
+ if(logger.additive)
+ break label0;
+ }
+ if(i == 0)
+ loggerContext.noAppenderDefinedWarning(this);
+ return;
+ }
+ logger = logger.parent;
+ } while(true);
+ }
+
+ Logger createChildByLastNamePart(String s)
+ {
+ if(LoggerNameUtil.getFirstSeparatorIndexOf(s) != -1)
+ throw new IllegalArgumentException((new StringBuilder()).append("Child name [").append(s).append(" passed as parameter, may not include [").append('.').append("]").toString());
+ if(childrenList == null)
+ childrenList = new ArrayList();
+ Logger logger;
+ if(isRootLogger())
+ logger = new Logger(s, this, loggerContext);
+ else
+ logger = new Logger((new StringBuilder()).append(name).append('.').append(s).toString(), this, loggerContext);
+ childrenList.add(logger);
+ logger.effectiveLevelInt = effectiveLevelInt;
+ return logger;
+ }
+
+ Logger createChildByName(String s)
+ {
+ if(LoggerNameUtil.getSeparatorIndexOf(s, 1 + name.length()) != -1)
+ throw new IllegalArgumentException((new StringBuilder()).append("For logger [").append(name).append("] child name [").append(s).append(" passed as parameter, may not include '.' after index").append(1 + name.length()).toString());
+ if(childrenList == null)
+ childrenList = new ArrayList(5);
+ Logger logger = new Logger(s, this, loggerContext);
+ childrenList.add(logger);
+ logger.effectiveLevelInt = effectiveLevelInt;
+ return logger;
+ }
+
+ public void debug(String s)
+ {
+ filterAndLog_0_Or3Plus(FQCN, null, Level.DEBUG, s, null, null);
+ }
+
+ public void debug(String s, Object obj)
+ {
+ filterAndLog_1(FQCN, null, Level.DEBUG, s, obj, null);
+ }
+
+ public void debug(String s, Object obj, Object obj1)
+ {
+ filterAndLog_2(FQCN, null, Level.DEBUG, s, obj, obj1, null);
+ }
+
+ public void debug(String s, Throwable throwable)
+ {
+ filterAndLog_0_Or3Plus(FQCN, null, Level.DEBUG, s, null, throwable);
+ }
+
+ public void debug(String s, Object aobj[])
+ {
+ filterAndLog_0_Or3Plus(FQCN, null, Level.DEBUG, s, aobj, null);
+ }
+
+ public void debug(Marker marker, String s)
+ {
+ filterAndLog_0_Or3Plus(FQCN, marker, Level.DEBUG, s, null, null);
+ }
+
+ public void debug(Marker marker, String s, Object obj)
+ {
+ filterAndLog_1(FQCN, marker, Level.DEBUG, s, obj, null);
+ }
+
+ public void debug(Marker marker, String s, Object obj, Object obj1)
+ {
+ filterAndLog_2(FQCN, marker, Level.DEBUG, s, obj, obj1, null);
+ }
+
+ public void debug(Marker marker, String s, Throwable throwable)
+ {
+ filterAndLog_0_Or3Plus(FQCN, marker, Level.DEBUG, s, null, throwable);
+ }
+
+ public void debug(Marker marker, String s, Object aobj[])
+ {
+ filterAndLog_0_Or3Plus(FQCN, marker, Level.DEBUG, s, aobj, null);
+ }
+
+ public void detachAndStopAllAppenders()
+ {
+ if(aai != null)
+ aai.detachAndStopAllAppenders();
+ }
+
+ public boolean detachAppender(Appender appender)
+ {
+ boolean flag;
+ if(aai == null)
+ flag = false;
+ else
+ flag = aai.detachAppender(appender);
+ return flag;
+ }
+
+ public boolean detachAppender(String s)
+ {
+ boolean flag;
+ if(aai == null)
+ flag = false;
+ else
+ flag = aai.detachAppender(s);
+ return flag;
+ }
+
+ public void error(String s)
+ {
+ filterAndLog_0_Or3Plus(FQCN, null, Level.ERROR, s, null, null);
+ }
+
+ public void error(String s, Object obj)
+ {
+ filterAndLog_1(FQCN, null, Level.ERROR, s, obj, null);
+ }
+
+ public void error(String s, Object obj, Object obj1)
+ {
+ filterAndLog_2(FQCN, null, Level.ERROR, s, obj, obj1, null);
+ }
+
+ public void error(String s, Throwable throwable)
+ {
+ filterAndLog_0_Or3Plus(FQCN, null, Level.ERROR, s, null, throwable);
+ }
+
+ public void error(String s, Object aobj[])
+ {
+ filterAndLog_0_Or3Plus(FQCN, null, Level.ERROR, s, aobj, null);
+ }
+
+ public void error(Marker marker, String s)
+ {
+ filterAndLog_0_Or3Plus(FQCN, marker, Level.ERROR, s, null, null);
+ }
+
+ public void error(Marker marker, String s, Object obj)
+ {
+ filterAndLog_1(FQCN, marker, Level.ERROR, s, obj, null);
+ }
+
+ public void error(Marker marker, String s, Object obj, Object obj1)
+ {
+ filterAndLog_2(FQCN, marker, Level.ERROR, s, obj, obj1, null);
+ }
+
+ public void error(Marker marker, String s, Throwable throwable)
+ {
+ filterAndLog_0_Or3Plus(FQCN, marker, Level.ERROR, s, null, throwable);
+ }
+
+ public void error(Marker marker, String s, Object aobj[])
+ {
+ filterAndLog_0_Or3Plus(FQCN, marker, Level.ERROR, s, aobj, null);
+ }
+
+ public Appender getAppender(String s)
+ {
+ Appender appender;
+ if(aai == null)
+ appender = null;
+ else
+ appender = aai.getAppender(s);
+ return appender;
+ }
+
+ Logger getChildByName(String s)
+ {
+ if(childrenList != null) goto _L2; else goto _L1
+_L1:
+ Logger logger = null;
+_L4:
+ return logger;
+_L2:
+ int i = childrenList.size();
+ for(int j = 0; j < i; j++)
+ {
+ logger = (Logger)childrenList.get(j);
+ if(s.equals(logger.getName()))
+ continue; /* Loop/switch isn't completed */
+ }
+
+ logger = null;
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ public Level getEffectiveLevel()
+ {
+ return Level.toLevel(effectiveLevelInt);
+ }
+
+ int getEffectiveLevelInt()
+ {
+ return effectiveLevelInt;
+ }
+
+ public Level getLevel()
+ {
+ return level;
+ }
+
+ public LoggerContext getLoggerContext()
+ {
+ return loggerContext;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public void info(String s)
+ {
+ filterAndLog_0_Or3Plus(FQCN, null, Level.INFO, s, null, null);
+ }
+
+ public void info(String s, Object obj)
+ {
+ filterAndLog_1(FQCN, null, Level.INFO, s, obj, null);
+ }
+
+ public void info(String s, Object obj, Object obj1)
+ {
+ filterAndLog_2(FQCN, null, Level.INFO, s, obj, obj1, null);
+ }
+
+ public void info(String s, Throwable throwable)
+ {
+ filterAndLog_0_Or3Plus(FQCN, null, Level.INFO, s, null, throwable);
+ }
+
+ public void info(String s, Object aobj[])
+ {
+ filterAndLog_0_Or3Plus(FQCN, null, Level.INFO, s, aobj, null);
+ }
+
+ public void info(Marker marker, String s)
+ {
+ filterAndLog_0_Or3Plus(FQCN, marker, Level.INFO, s, null, null);
+ }
+
+ public void info(Marker marker, String s, Object obj)
+ {
+ filterAndLog_1(FQCN, marker, Level.INFO, s, obj, null);
+ }
+
+ public void info(Marker marker, String s, Object obj, Object obj1)
+ {
+ filterAndLog_2(FQCN, marker, Level.INFO, s, obj, obj1, null);
+ }
+
+ public void info(Marker marker, String s, Throwable throwable)
+ {
+ filterAndLog_0_Or3Plus(FQCN, marker, Level.INFO, s, null, throwable);
+ }
+
+ public void info(Marker marker, String s, Object aobj[])
+ {
+ filterAndLog_0_Or3Plus(FQCN, marker, Level.INFO, s, aobj, null);
+ }
+
+ public boolean isAdditive()
+ {
+ return additive;
+ }
+
+ public boolean isAttached(Appender appender)
+ {
+ boolean flag;
+ if(aai == null)
+ flag = false;
+ else
+ flag = aai.isAttached(appender);
+ return flag;
+ }
+
+ public boolean isDebugEnabled()
+ {
+ return isDebugEnabled(null);
+ }
+
+ public boolean isDebugEnabled(Marker marker)
+ {
+ boolean flag;
+ FilterReply filterreply;
+ flag = true;
+ filterreply = callTurboFilters(marker, Level.DEBUG);
+ if(filterreply != FilterReply.NEUTRAL) goto _L2; else goto _L1
+_L1:
+ if(effectiveLevelInt > 10000)
+ flag = false;
+_L4:
+ return flag;
+_L2:
+ if(filterreply != FilterReply.DENY)
+ break; /* Loop/switch isn't completed */
+ flag = false;
+ if(true) goto _L4; else goto _L3
+_L3:
+ if(filterreply == FilterReply.ACCEPT) goto _L4; else goto _L5
+_L5:
+ throw new IllegalStateException((new StringBuilder()).append("Unknown FilterReply value: ").append(filterreply).toString());
+ }
+
+ public boolean isEnabledFor(Level level1)
+ {
+ return isEnabledFor(null, level1);
+ }
+
+ public boolean isEnabledFor(Marker marker, Level level1)
+ {
+ boolean flag;
+ FilterReply filterreply;
+ flag = true;
+ filterreply = callTurboFilters(marker, level1);
+ if(filterreply != FilterReply.NEUTRAL) goto _L2; else goto _L1
+_L1:
+ if(effectiveLevelInt > level1.levelInt)
+ flag = false;
+_L4:
+ return flag;
+_L2:
+ if(filterreply != FilterReply.DENY)
+ break; /* Loop/switch isn't completed */
+ flag = false;
+ if(true) goto _L4; else goto _L3
+_L3:
+ if(filterreply == FilterReply.ACCEPT) goto _L4; else goto _L5
+_L5:
+ throw new IllegalStateException((new StringBuilder()).append("Unknown FilterReply value: ").append(filterreply).toString());
+ }
+
+ public boolean isErrorEnabled()
+ {
+ return isErrorEnabled(null);
+ }
+
+ public boolean isErrorEnabled(Marker marker)
+ {
+ boolean flag;
+ FilterReply filterreply;
+ flag = true;
+ filterreply = callTurboFilters(marker, Level.ERROR);
+ if(filterreply != FilterReply.NEUTRAL) goto _L2; else goto _L1
+_L1:
+ if(effectiveLevelInt > 40000)
+ flag = false;
+_L4:
+ return flag;
+_L2:
+ if(filterreply != FilterReply.DENY)
+ break; /* Loop/switch isn't completed */
+ flag = false;
+ if(true) goto _L4; else goto _L3
+_L3:
+ if(filterreply == FilterReply.ACCEPT) goto _L4; else goto _L5
+_L5:
+ throw new IllegalStateException((new StringBuilder()).append("Unknown FilterReply value: ").append(filterreply).toString());
+ }
+
+ public boolean isInfoEnabled()
+ {
+ return isInfoEnabled(null);
+ }
+
+ public boolean isInfoEnabled(Marker marker)
+ {
+ boolean flag;
+ FilterReply filterreply;
+ flag = true;
+ filterreply = callTurboFilters(marker, Level.INFO);
+ if(filterreply != FilterReply.NEUTRAL) goto _L2; else goto _L1
+_L1:
+ if(effectiveLevelInt > 20000)
+ flag = false;
+_L4:
+ return flag;
+_L2:
+ if(filterreply != FilterReply.DENY)
+ break; /* Loop/switch isn't completed */
+ flag = false;
+ if(true) goto _L4; else goto _L3
+_L3:
+ if(filterreply == FilterReply.ACCEPT) goto _L4; else goto _L5
+_L5:
+ throw new IllegalStateException((new StringBuilder()).append("Unknown FilterReply value: ").append(filterreply).toString());
+ }
+
+ public boolean isTraceEnabled()
+ {
+ return isTraceEnabled(null);
+ }
+
+ public boolean isTraceEnabled(Marker marker)
+ {
+ boolean flag;
+ FilterReply filterreply;
+ flag = true;
+ filterreply = callTurboFilters(marker, Level.TRACE);
+ if(filterreply != FilterReply.NEUTRAL) goto _L2; else goto _L1
+_L1:
+ if(effectiveLevelInt > 5000)
+ flag = false;
+_L4:
+ return flag;
+_L2:
+ if(filterreply != FilterReply.DENY)
+ break; /* Loop/switch isn't completed */
+ flag = false;
+ if(true) goto _L4; else goto _L3
+_L3:
+ if(filterreply == FilterReply.ACCEPT) goto _L4; else goto _L5
+_L5:
+ throw new IllegalStateException((new StringBuilder()).append("Unknown FilterReply value: ").append(filterreply).toString());
+ }
+
+ public boolean isWarnEnabled()
+ {
+ return isWarnEnabled(null);
+ }
+
+ public boolean isWarnEnabled(Marker marker)
+ {
+ boolean flag;
+ FilterReply filterreply;
+ flag = true;
+ filterreply = callTurboFilters(marker, Level.WARN);
+ if(filterreply != FilterReply.NEUTRAL) goto _L2; else goto _L1
+_L1:
+ if(effectiveLevelInt > 30000)
+ flag = false;
+_L4:
+ return flag;
+_L2:
+ if(filterreply != FilterReply.DENY)
+ break; /* Loop/switch isn't completed */
+ flag = false;
+ if(true) goto _L4; else goto _L3
+_L3:
+ if(filterreply == FilterReply.ACCEPT) goto _L4; else goto _L5
+_L5:
+ throw new IllegalStateException((new StringBuilder()).append("Unknown FilterReply value: ").append(filterreply).toString());
+ }
+
+ public Iterator iteratorForAppenders()
+ {
+ Iterator iterator;
+ if(aai == null)
+ iterator = Collections.EMPTY_LIST.iterator();
+ else
+ iterator = aai.iteratorForAppenders();
+ return iterator;
+ }
+
+ public void log(Marker marker, String s, int i, String s1, Object aobj[], Throwable throwable)
+ {
+ filterAndLog_0_Or3Plus(s, marker, Level.fromLocationAwareLoggerInteger(i), s1, aobj, throwable);
+ }
+
+ protected Object readResolve()
+ throws ObjectStreamException
+ {
+ return LoggerFactory.getLogger(getName());
+ }
+
+ void recursiveReset()
+ {
+ detachAndStopAllAppenders();
+ localLevelReset();
+ additive = true;
+ if(childrenList != null)
+ {
+ Iterator iterator = childrenList.iterator();
+ while(iterator.hasNext())
+ ((Logger)iterator.next()).recursiveReset();
+ }
+ }
+
+ public void setAdditive(boolean flag)
+ {
+ additive = flag;
+ }
+
+ /**
+ * @deprecated Method setLevel is deprecated
+ */
+
+ public void setLevel(Level level1)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ Level level2 = level;
+ if(level2 != level1) goto _L2; else goto _L1
+_L1:
+ this;
+ JVM INSTR monitorexit ;
+ return;
+_L2:
+ if(level1 != null)
+ break MISSING_BLOCK_LABEL_42;
+ if(isRootLogger())
+ throw new IllegalArgumentException("The level of the root logger cannot be set to null");
+ break MISSING_BLOCK_LABEL_42;
+ Exception exception;
+ exception;
+ this;
+ JVM INSTR monitorexit ;
+ throw exception;
+ level = level1;
+ if(level1 == null)
+ {
+ effectiveLevelInt = parent.effectiveLevelInt;
+ level1 = parent.getEffectiveLevel();
+ } else
+ {
+ effectiveLevelInt = level1.levelInt;
+ }
+ if(childrenList != null)
+ {
+ int i = childrenList.size();
+ for(int j = 0; j < i; j++)
+ ((Logger)childrenList.get(j)).handleParentLevelChange(effectiveLevelInt);
+
+ }
+ loggerContext.fireOnLevelChange(this, level1);
+ goto _L1
+ }
+
+ public String toString()
+ {
+ return (new StringBuilder()).append("Logger[").append(name).append("]").toString();
+ }
+
+ public void trace(String s)
+ {
+ filterAndLog_0_Or3Plus(FQCN, null, Level.TRACE, s, null, null);
+ }
+
+ public void trace(String s, Object obj)
+ {
+ filterAndLog_1(FQCN, null, Level.TRACE, s, obj, null);
+ }
+
+ public void trace(String s, Object obj, Object obj1)
+ {
+ filterAndLog_2(FQCN, null, Level.TRACE, s, obj, obj1, null);
+ }
+
+ public void trace(String s, Throwable throwable)
+ {
+ filterAndLog_0_Or3Plus(FQCN, null, Level.TRACE, s, null, throwable);
+ }
+
+ public void trace(String s, Object aobj[])
+ {
+ filterAndLog_0_Or3Plus(FQCN, null, Level.TRACE, s, aobj, null);
+ }
+
+ public void trace(Marker marker, String s)
+ {
+ filterAndLog_0_Or3Plus(FQCN, marker, Level.TRACE, s, null, null);
+ }
+
+ public void trace(Marker marker, String s, Object obj)
+ {
+ filterAndLog_1(FQCN, marker, Level.TRACE, s, obj, null);
+ }
+
+ public void trace(Marker marker, String s, Object obj, Object obj1)
+ {
+ filterAndLog_2(FQCN, marker, Level.TRACE, s, obj, obj1, null);
+ }
+
+ public void trace(Marker marker, String s, Throwable throwable)
+ {
+ filterAndLog_0_Or3Plus(FQCN, marker, Level.TRACE, s, null, throwable);
+ }
+
+ public void trace(Marker marker, String s, Object aobj[])
+ {
+ filterAndLog_0_Or3Plus(FQCN, marker, Level.TRACE, s, aobj, null);
+ }
+
+ public void warn(String s)
+ {
+ filterAndLog_0_Or3Plus(FQCN, null, Level.WARN, s, null, null);
+ }
+
+ public void warn(String s, Object obj)
+ {
+ filterAndLog_1(FQCN, null, Level.WARN, s, obj, null);
+ }
+
+ public void warn(String s, Object obj, Object obj1)
+ {
+ filterAndLog_2(FQCN, null, Level.WARN, s, obj, obj1, null);
+ }
+
+ public void warn(String s, Throwable throwable)
+ {
+ filterAndLog_0_Or3Plus(FQCN, null, Level.WARN, s, null, throwable);
+ }
+
+ public void warn(String s, Object aobj[])
+ {
+ filterAndLog_0_Or3Plus(FQCN, null, Level.WARN, s, aobj, null);
+ }
+
+ public void warn(Marker marker, String s)
+ {
+ filterAndLog_0_Or3Plus(FQCN, marker, Level.WARN, s, null, null);
+ }
+
+ public void warn(Marker marker, String s, Object obj)
+ {
+ filterAndLog_1(FQCN, marker, Level.WARN, s, obj, null);
+ }
+
+ public void warn(Marker marker, String s, Object obj, Object obj1)
+ {
+ filterAndLog_2(FQCN, marker, Level.WARN, s, obj, obj1, null);
+ }
+
+ public void warn(Marker marker, String s, Throwable throwable)
+ {
+ filterAndLog_0_Or3Plus(FQCN, marker, Level.WARN, s, null, throwable);
+ }
+
+ public void warn(Marker marker, String s, Object aobj[])
+ {
+ filterAndLog_0_Or3Plus(FQCN, marker, Level.WARN, s, aobj, null);
+ }
+
+ private static final int DEFAULT_CHILD_ARRAY_SIZE = 5;
+ public static final String FQCN = ch/qos/logback/classic/Logger.getName();
+ private static final long serialVersionUID = 0x4bb1f08f92d542c2L;
+ private transient AppenderAttachableImpl aai;
+ private transient boolean additive;
+ private transient List childrenList;
+ private transient int effectiveLevelInt;
+ private transient Level level;
+ final transient LoggerContext loggerContext;
+ private String name;
+ private transient Logger parent;
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/LoggerContext.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/LoggerContext.java
new file mode 100644
index 0000000..fc36e03
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/LoggerContext.java
@@ -0,0 +1,386 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic;
+
+import ch.qos.logback.classic.android.AndroidManifestPropertiesUtil;
+import ch.qos.logback.classic.spi.LoggerComparator;
+import ch.qos.logback.classic.spi.LoggerContextListener;
+import ch.qos.logback.classic.spi.LoggerContextVO;
+import ch.qos.logback.classic.spi.TurboFilterList;
+import ch.qos.logback.classic.turbo.TurboFilter;
+import ch.qos.logback.classic.util.LoggerNameUtil;
+import ch.qos.logback.core.ContextBase;
+import ch.qos.logback.core.joran.spi.JoranException;
+import ch.qos.logback.core.spi.FilterReply;
+import ch.qos.logback.core.spi.LifeCycle;
+import ch.qos.logback.core.status.*;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+import org.slf4j.*;
+
+// Referenced classes of package ch.qos.logback.classic:
+// Logger, Level
+
+public class LoggerContext extends ContextBase
+ implements ILoggerFactory, LifeCycle
+{
+
+ public LoggerContext()
+ {
+ noAppenderWarning = 0;
+ packagingDataEnabled = true;
+ androidPropsInitialized = false;
+ maxCallerDataDepth = 8;
+ resetCount = 0;
+ loggerCache = new ConcurrentHashMap();
+ loggerContextRemoteView = new LoggerContextVO(this);
+ root.setLevel(Level.DEBUG);
+ loggerCache.put("ROOT", root);
+ initEvaluatorMap();
+ size = 1;
+ frameworkPackages = new ArrayList();
+ }
+
+ private void fireOnReset()
+ {
+ for(Iterator iterator = loggerContextListenerList.iterator(); iterator.hasNext(); ((LoggerContextListener)iterator.next()).onReset(this));
+ }
+
+ private void fireOnStart()
+ {
+ for(Iterator iterator = loggerContextListenerList.iterator(); iterator.hasNext(); ((LoggerContextListener)iterator.next()).onStart(this));
+ }
+
+ private void fireOnStop()
+ {
+ for(Iterator iterator = loggerContextListenerList.iterator(); iterator.hasNext(); ((LoggerContextListener)iterator.next()).onStop(this));
+ }
+
+ private void incSize()
+ {
+ size = 1 + size;
+ }
+
+ private boolean isSpecialKey(String s)
+ {
+ boolean flag;
+ if(s.equals("PACKAGE_NAME") || s.equals("VERSION_NAME") || s.equals("VERSION_CODE") || s.equals("EXT_DIR") || s.equals("DATA_DIR"))
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ private void resetAllListeners()
+ {
+ loggerContextListenerList.clear();
+ }
+
+ private void resetListenersExceptResetResistant()
+ {
+ ArrayList arraylist = new ArrayList();
+ Iterator iterator = loggerContextListenerList.iterator();
+ do
+ {
+ if(!iterator.hasNext())
+ break;
+ LoggerContextListener loggercontextlistener = (LoggerContextListener)iterator.next();
+ if(loggercontextlistener.isResetResistant())
+ arraylist.add(loggercontextlistener);
+ } while(true);
+ loggerContextListenerList.retainAll(arraylist);
+ }
+
+ private void resetStatusListeners()
+ {
+ StatusManager statusmanager = getStatusManager();
+ for(Iterator iterator = statusmanager.getCopyOfStatusListenerList().iterator(); iterator.hasNext(); statusmanager.remove((StatusListener)iterator.next()));
+ }
+
+ private void updateLoggerContextVO()
+ {
+ loggerContextRemoteView = new LoggerContextVO(this);
+ }
+
+ public void addListener(LoggerContextListener loggercontextlistener)
+ {
+ loggerContextListenerList.add(loggercontextlistener);
+ }
+
+ public void addTurboFilter(TurboFilter turbofilter)
+ {
+ turboFilterList.add(turbofilter);
+ }
+
+ public ch.qos.logback.classic.Logger exists(String s)
+ {
+ return (ch.qos.logback.classic.Logger)loggerCache.get(s);
+ }
+
+ void fireOnLevelChange(ch.qos.logback.classic.Logger logger, Level level)
+ {
+ for(Iterator iterator = loggerContextListenerList.iterator(); iterator.hasNext(); ((LoggerContextListener)iterator.next()).onLevelChange(logger, level));
+ }
+
+ public List getCopyOfListenerList()
+ {
+ return new ArrayList(loggerContextListenerList);
+ }
+
+ public List getFrameworkPackages()
+ {
+ return frameworkPackages;
+ }
+
+ public final ch.qos.logback.classic.Logger getLogger(Class class1)
+ {
+ return getLogger(class1.getName());
+ }
+
+ public final ch.qos.logback.classic.Logger getLogger(String s)
+ {
+ if(s == null)
+ throw new IllegalArgumentException("name argument cannot be null");
+ if(!"ROOT".equalsIgnoreCase(s)) goto _L2; else goto _L1
+_L1:
+ ch.qos.logback.classic.Logger logger1 = root;
+_L4:
+ return logger1;
+_L2:
+ ch.qos.logback.classic.Logger logger;
+ logger = root;
+ logger1 = (ch.qos.logback.classic.Logger)loggerCache.get(s);
+ if(logger1 != null) goto _L4; else goto _L3
+_L3:
+ ch.qos.logback.classic.Logger logger2;
+ int i;
+ logger2 = logger;
+ i = 0;
+_L5:
+ int k;
+ ch.qos.logback.classic.Logger logger4;
+ int j = LoggerNameUtil.getSeparatorIndexOf(s, i);
+ String s1;
+ ch.qos.logback.classic.Logger logger3;
+ if(j == -1)
+ s1 = s;
+ else
+ s1 = s.substring(0, j);
+ k = j + 1;
+ logger2;
+ JVM INSTR monitorenter ;
+ logger3 = logger2.getChildByName(s1);
+ if(logger3 == null)
+ {
+ logger3 = logger2.createChildByName(s1);
+ loggerCache.put(s1, logger3);
+ incSize();
+ }
+ logger4 = logger3;
+ logger2;
+ JVM INSTR monitorexit ;
+ if(j != -1)
+ break MISSING_BLOCK_LABEL_167;
+ logger1 = logger4;
+ goto _L4
+ Exception exception;
+ exception;
+ logger2;
+ JVM INSTR monitorexit ;
+ throw exception;
+ logger2 = logger4;
+ i = k;
+ goto _L5
+ }
+
+ public volatile Logger getLogger(String s)
+ {
+ return getLogger(s);
+ }
+
+ public LoggerContextVO getLoggerContextRemoteView()
+ {
+ return loggerContextRemoteView;
+ }
+
+ public List getLoggerList()
+ {
+ ArrayList arraylist = new ArrayList(loggerCache.values());
+ Collections.sort(arraylist, new LoggerComparator());
+ return arraylist;
+ }
+
+ public int getMaxCallerDataDepth()
+ {
+ return maxCallerDataDepth;
+ }
+
+ public String getProperty(String s)
+ {
+ if(isSpecialKey(s))
+ try
+ {
+ if(!androidPropsInitialized)
+ {
+ androidPropsInitialized = true;
+ AndroidManifestPropertiesUtil.setAndroidProperties(this);
+ }
+ }
+ catch(JoranException joranexception)
+ {
+ getStatusManager().add(new WarnStatus("Can't set manifest properties", joranexception));
+ androidPropsInitialized = false;
+ }
+ return super.getProperty(s);
+ }
+
+ final FilterReply getTurboFilterChainDecision_0_3OrMore(Marker marker, ch.qos.logback.classic.Logger logger, Level level, String s, Object aobj[], Throwable throwable)
+ {
+ FilterReply filterreply;
+ if(turboFilterList.size() == 0)
+ filterreply = FilterReply.NEUTRAL;
+ else
+ filterreply = turboFilterList.getTurboFilterChainDecision(marker, logger, level, s, aobj, throwable);
+ return filterreply;
+ }
+
+ final FilterReply getTurboFilterChainDecision_1(Marker marker, ch.qos.logback.classic.Logger logger, Level level, String s, Object obj, Throwable throwable)
+ {
+ FilterReply filterreply;
+ if(turboFilterList.size() == 0)
+ {
+ filterreply = FilterReply.NEUTRAL;
+ } else
+ {
+ TurboFilterList turbofilterlist = turboFilterList;
+ Object aobj[] = new Object[1];
+ aobj[0] = obj;
+ filterreply = turbofilterlist.getTurboFilterChainDecision(marker, logger, level, s, aobj, throwable);
+ }
+ return filterreply;
+ }
+
+ final FilterReply getTurboFilterChainDecision_2(Marker marker, ch.qos.logback.classic.Logger logger, Level level, String s, Object obj, Object obj1, Throwable throwable)
+ {
+ FilterReply filterreply;
+ if(turboFilterList.size() == 0)
+ {
+ filterreply = FilterReply.NEUTRAL;
+ } else
+ {
+ TurboFilterList turbofilterlist = turboFilterList;
+ Object aobj[] = new Object[2];
+ aobj[0] = obj;
+ aobj[1] = obj1;
+ filterreply = turbofilterlist.getTurboFilterChainDecision(marker, logger, level, s, aobj, throwable);
+ }
+ return filterreply;
+ }
+
+ public TurboFilterList getTurboFilterList()
+ {
+ return turboFilterList;
+ }
+
+ void initEvaluatorMap()
+ {
+ putObject("EVALUATOR_MAP", new HashMap());
+ }
+
+ public boolean isPackagingDataEnabled()
+ {
+ return packagingDataEnabled;
+ }
+
+ final void noAppenderDefinedWarning(ch.qos.logback.classic.Logger logger)
+ {
+ int i = noAppenderWarning;
+ noAppenderWarning = i + 1;
+ if(i == 0)
+ getStatusManager().add(new WarnStatus((new StringBuilder()).append("No appenders present in context [").append(getName()).append("] for logger [").append(logger.getName()).append("].").toString(), logger));
+ }
+
+ public void putProperty(String s, String s1)
+ {
+ super.putProperty(s, s1);
+ updateLoggerContextVO();
+ }
+
+ public void removeListener(LoggerContextListener loggercontextlistener)
+ {
+ loggerContextListenerList.remove(loggercontextlistener);
+ }
+
+ public void reset()
+ {
+ resetCount = 1 + resetCount;
+ super.reset();
+ initEvaluatorMap();
+ root.recursiveReset();
+ resetTurboFilterList();
+ fireOnReset();
+ resetListenersExceptResetResistant();
+ resetStatusListeners();
+ }
+
+ public void resetTurboFilterList()
+ {
+ for(Iterator iterator = turboFilterList.iterator(); iterator.hasNext(); ((TurboFilter)iterator.next()).stop());
+ turboFilterList.clear();
+ }
+
+ public void setMaxCallerDataDepth(int i)
+ {
+ maxCallerDataDepth = i;
+ }
+
+ public void setName(String s)
+ {
+ super.setName(s);
+ updateLoggerContextVO();
+ }
+
+ public void setPackagingDataEnabled(boolean flag)
+ {
+ packagingDataEnabled = flag;
+ }
+
+ int size()
+ {
+ return size;
+ }
+
+ public void start()
+ {
+ super.start();
+ fireOnStart();
+ }
+
+ public void stop()
+ {
+ reset();
+ fireOnStop();
+ resetAllListeners();
+ super.stop();
+ }
+
+ public String toString()
+ {
+ return (new StringBuilder()).append(getClass().getName()).append("[").append(getName()).append("]").toString();
+ }
+
+ private boolean androidPropsInitialized;
+ private List frameworkPackages;
+ private Map loggerCache;
+ private final List loggerContextListenerList = new ArrayList();
+ private LoggerContextVO loggerContextRemoteView;
+ private int maxCallerDataDepth;
+ private int noAppenderWarning;
+ private boolean packagingDataEnabled;
+ int resetCount;
+ final ch.qos.logback.classic.Logger root = new ch.qos.logback.classic.Logger("ROOT", null, this);
+ private int size;
+ private final TurboFilterList turboFilterList = new TurboFilterList();
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/PatternLayout.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/PatternLayout.java
new file mode 100644
index 0000000..ec9f28f
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/PatternLayout.java
@@ -0,0 +1,131 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic;
+
+import ch.qos.logback.classic.pattern.CallerDataConverter;
+import ch.qos.logback.classic.pattern.ClassOfCallerConverter;
+import ch.qos.logback.classic.pattern.ContextNameConverter;
+import ch.qos.logback.classic.pattern.DateConverter;
+import ch.qos.logback.classic.pattern.EnsureExceptionHandling;
+import ch.qos.logback.classic.pattern.ExtendedThrowableProxyConverter;
+import ch.qos.logback.classic.pattern.FileOfCallerConverter;
+import ch.qos.logback.classic.pattern.LevelConverter;
+import ch.qos.logback.classic.pattern.LineOfCallerConverter;
+import ch.qos.logback.classic.pattern.LineSeparatorConverter;
+import ch.qos.logback.classic.pattern.LocalSequenceNumberConverter;
+import ch.qos.logback.classic.pattern.LoggerConverter;
+import ch.qos.logback.classic.pattern.MDCConverter;
+import ch.qos.logback.classic.pattern.MarkerConverter;
+import ch.qos.logback.classic.pattern.MessageConverter;
+import ch.qos.logback.classic.pattern.MethodOfCallerConverter;
+import ch.qos.logback.classic.pattern.NopThrowableInformationConverter;
+import ch.qos.logback.classic.pattern.PropertyConverter;
+import ch.qos.logback.classic.pattern.RelativeTimeConverter;
+import ch.qos.logback.classic.pattern.RootCauseFirstThrowableProxyConverter;
+import ch.qos.logback.classic.pattern.ThreadConverter;
+import ch.qos.logback.classic.pattern.ThrowableProxyConverter;
+import ch.qos.logback.classic.pattern.color.HighlightingCompositeConverter;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.pattern.PatternLayoutBase;
+import ch.qos.logback.core.pattern.color.*;
+import ch.qos.logback.core.pattern.parser.Parser;
+import java.util.HashMap;
+import java.util.Map;
+
+public class PatternLayout extends PatternLayoutBase
+{
+
+ public PatternLayout()
+ {
+ postCompileProcessor = new EnsureExceptionHandling();
+ }
+
+ public String doLayout(ILoggingEvent iloggingevent)
+ {
+ String s;
+ if(!isStarted())
+ s = "";
+ else
+ s = writeLoopOnConverters(iloggingevent);
+ return s;
+ }
+
+ public volatile String doLayout(Object obj)
+ {
+ return doLayout((ILoggingEvent)obj);
+ }
+
+ public Map getDefaultConverterMap()
+ {
+ return defaultConverterMap;
+ }
+
+ public static final Map defaultConverterMap;
+
+ static
+ {
+ defaultConverterMap = new HashMap();
+ defaultConverterMap.putAll(Parser.DEFAULT_COMPOSITE_CONVERTER_MAP);
+ defaultConverterMap.put("d", ch/qos/logback/classic/pattern/DateConverter.getName());
+ defaultConverterMap.put("date", ch/qos/logback/classic/pattern/DateConverter.getName());
+ defaultConverterMap.put("r", ch/qos/logback/classic/pattern/RelativeTimeConverter.getName());
+ defaultConverterMap.put("relative", ch/qos/logback/classic/pattern/RelativeTimeConverter.getName());
+ defaultConverterMap.put("level", ch/qos/logback/classic/pattern/LevelConverter.getName());
+ defaultConverterMap.put("le", ch/qos/logback/classic/pattern/LevelConverter.getName());
+ defaultConverterMap.put("p", ch/qos/logback/classic/pattern/LevelConverter.getName());
+ defaultConverterMap.put("t", ch/qos/logback/classic/pattern/ThreadConverter.getName());
+ defaultConverterMap.put("thread", ch/qos/logback/classic/pattern/ThreadConverter.getName());
+ defaultConverterMap.put("lo", ch/qos/logback/classic/pattern/LoggerConverter.getName());
+ defaultConverterMap.put("logger", ch/qos/logback/classic/pattern/LoggerConverter.getName());
+ defaultConverterMap.put("c", ch/qos/logback/classic/pattern/LoggerConverter.getName());
+ defaultConverterMap.put("m", ch/qos/logback/classic/pattern/MessageConverter.getName());
+ defaultConverterMap.put("msg", ch/qos/logback/classic/pattern/MessageConverter.getName());
+ defaultConverterMap.put("message", ch/qos/logback/classic/pattern/MessageConverter.getName());
+ defaultConverterMap.put("C", ch/qos/logback/classic/pattern/ClassOfCallerConverter.getName());
+ defaultConverterMap.put("class", ch/qos/logback/classic/pattern/ClassOfCallerConverter.getName());
+ defaultConverterMap.put("M", ch/qos/logback/classic/pattern/MethodOfCallerConverter.getName());
+ defaultConverterMap.put("method", ch/qos/logback/classic/pattern/MethodOfCallerConverter.getName());
+ defaultConverterMap.put("L", ch/qos/logback/classic/pattern/LineOfCallerConverter.getName());
+ defaultConverterMap.put("line", ch/qos/logback/classic/pattern/LineOfCallerConverter.getName());
+ defaultConverterMap.put("F", ch/qos/logback/classic/pattern/FileOfCallerConverter.getName());
+ defaultConverterMap.put("file", ch/qos/logback/classic/pattern/FileOfCallerConverter.getName());
+ defaultConverterMap.put("X", ch/qos/logback/classic/pattern/MDCConverter.getName());
+ defaultConverterMap.put("mdc", ch/qos/logback/classic/pattern/MDCConverter.getName());
+ defaultConverterMap.put("ex", ch/qos/logback/classic/pattern/ThrowableProxyConverter.getName());
+ defaultConverterMap.put("exception", ch/qos/logback/classic/pattern/ThrowableProxyConverter.getName());
+ defaultConverterMap.put("rEx", ch/qos/logback/classic/pattern/RootCauseFirstThrowableProxyConverter.getName());
+ defaultConverterMap.put("rootException", ch/qos/logback/classic/pattern/RootCauseFirstThrowableProxyConverter.getName());
+ defaultConverterMap.put("throwable", ch/qos/logback/classic/pattern/ThrowableProxyConverter.getName());
+ defaultConverterMap.put("xEx", ch/qos/logback/classic/pattern/ExtendedThrowableProxyConverter.getName());
+ defaultConverterMap.put("xException", ch/qos/logback/classic/pattern/ExtendedThrowableProxyConverter.getName());
+ defaultConverterMap.put("xThrowable", ch/qos/logback/classic/pattern/ExtendedThrowableProxyConverter.getName());
+ defaultConverterMap.put("nopex", ch/qos/logback/classic/pattern/NopThrowableInformationConverter.getName());
+ defaultConverterMap.put("nopexception", ch/qos/logback/classic/pattern/NopThrowableInformationConverter.getName());
+ defaultConverterMap.put("cn", ch/qos/logback/classic/pattern/ContextNameConverter.getName());
+ defaultConverterMap.put("contextName", ch/qos/logback/classic/pattern/ContextNameConverter.getName());
+ defaultConverterMap.put("caller", ch/qos/logback/classic/pattern/CallerDataConverter.getName());
+ defaultConverterMap.put("marker", ch/qos/logback/classic/pattern/MarkerConverter.getName());
+ defaultConverterMap.put("property", ch/qos/logback/classic/pattern/PropertyConverter.getName());
+ defaultConverterMap.put("n", ch/qos/logback/classic/pattern/LineSeparatorConverter.getName());
+ defaultConverterMap.put("black", ch/qos/logback/core/pattern/color/BlackCompositeConverter.getName());
+ defaultConverterMap.put("red", ch/qos/logback/core/pattern/color/RedCompositeConverter.getName());
+ defaultConverterMap.put("green", ch/qos/logback/core/pattern/color/GreenCompositeConverter.getName());
+ defaultConverterMap.put("yellow", ch/qos/logback/core/pattern/color/YellowCompositeConverter.getName());
+ defaultConverterMap.put("blue", ch/qos/logback/core/pattern/color/BlueCompositeConverter.getName());
+ defaultConverterMap.put("magenta", ch/qos/logback/core/pattern/color/MagentaCompositeConverter.getName());
+ defaultConverterMap.put("cyan", ch/qos/logback/core/pattern/color/CyanCompositeConverter.getName());
+ defaultConverterMap.put("white", ch/qos/logback/core/pattern/color/WhiteCompositeConverter.getName());
+ defaultConverterMap.put("gray", ch/qos/logback/core/pattern/color/GrayCompositeConverter.getName());
+ defaultConverterMap.put("boldRed", ch/qos/logback/core/pattern/color/BoldRedCompositeConverter.getName());
+ defaultConverterMap.put("boldGreen", ch/qos/logback/core/pattern/color/BoldGreenCompositeConverter.getName());
+ defaultConverterMap.put("boldYellow", ch/qos/logback/core/pattern/color/BoldYellowCompositeConverter.getName());
+ defaultConverterMap.put("boldBlue", ch/qos/logback/core/pattern/color/BoldBlueCompositeConverter.getName());
+ defaultConverterMap.put("boldMagenta", ch/qos/logback/core/pattern/color/BoldMagentaCompositeConverter.getName());
+ defaultConverterMap.put("boldCyan", ch/qos/logback/core/pattern/color/BoldCyanCompositeConverter.getName());
+ defaultConverterMap.put("boldWhite", ch/qos/logback/core/pattern/color/BoldWhiteCompositeConverter.getName());
+ defaultConverterMap.put("highlight", ch/qos/logback/classic/pattern/color/HighlightingCompositeConverter.getName());
+ defaultConverterMap.put("lsn", ch/qos/logback/classic/pattern/LocalSequenceNumberConverter.getName());
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/android/ASaxEventRecorder.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/android/ASaxEventRecorder.java
new file mode 100644
index 0000000..d14d119
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/android/ASaxEventRecorder.java
@@ -0,0 +1,217 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.android;
+
+import ch.qos.logback.core.joran.event.SaxEventRecorder;
+import ch.qos.logback.core.joran.spi.JoranException;
+import ch.qos.logback.repackage.brut.androlib.res.decoder.AXmlResourceParser;
+import java.util.*;
+import org.xml.sax.InputSource;
+import org.xml.sax.helpers.AttributesImpl;
+import org.xml.sax.helpers.LocatorImpl;
+import org.xmlpull.v1.XmlPullParser;
+
+public class ASaxEventRecorder extends SaxEventRecorder
+{
+ static class StatePassFilter
+ {
+
+ public boolean checkEnd(String s)
+ {
+ boolean flag = false;
+ if(_depth <= 0 || !s.equals(_states[-1 + _depth])) goto _L2; else goto _L1
+_L1:
+ _depth = -1 + _depth;
+_L4:
+ return flag;
+_L2:
+ if(_depth == _states.length)
+ flag = true;
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ public boolean checkStart(String s)
+ {
+ boolean flag;
+ if(_depth == _states.length)
+ {
+ flag = true;
+ } else
+ {
+ if(s.equals(_states[_depth]))
+ _depth = 1 + _depth;
+ flag = false;
+ }
+ return flag;
+ }
+
+ public int depth()
+ {
+ return _depth;
+ }
+
+ public boolean passed()
+ {
+ boolean flag;
+ if(_depth == _states.length)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ public void reset()
+ {
+ _depth = 0;
+ }
+
+ public int size()
+ {
+ return _states.length;
+ }
+
+ private int _depth;
+ private final String _states[];
+
+ public transient StatePassFilter(String as[])
+ {
+ _depth = 0;
+ if(as == null)
+ as = new String[0];
+ _states = as;
+ }
+ }
+
+
+ public ASaxEventRecorder()
+ {
+ holderForStartAndLength = new int[2];
+ filter = new StatePassFilter(new String[0]);
+ elemNameToWatch = null;
+ elemAttrs = null;
+ }
+
+ private void characters(XmlPullParser xmlpullparser)
+ {
+ if(filter.passed())
+ super.characters(xmlpullparser.getTextCharacters(holderForStartAndLength), holderForStartAndLength[0], holderForStartAndLength[1]);
+ }
+
+ private void checkForWatchedAttributes(XmlPullParser xmlpullparser)
+ {
+ if(elemNameToWatch != null && elemAttrs == null && xmlpullparser.getName().equals(elemNameToWatch))
+ {
+ HashMap hashmap = new HashMap();
+ int i = 0;
+ while(i < xmlpullparser.getAttributeCount())
+ {
+ String s = xmlpullparser.getAttributeNamespace(i);
+ String s1;
+ if(s.length() > 0)
+ {
+ int j = s.lastIndexOf("/");
+ if(j > -1 && j + 1 < s.length())
+ s = s.substring(j + 1);
+ s1 = (new StringBuilder()).append(s).append(":").toString();
+ } else
+ {
+ s1 = "";
+ }
+ hashmap.put((new StringBuilder()).append(s1).append(xmlpullparser.getAttributeName(i)).toString(), xmlpullparser.getAttributeValue(i));
+ i++;
+ }
+ elemAttrs = hashmap;
+ }
+ }
+
+ private void endElement(XmlPullParser xmlpullparser)
+ {
+ String s = xmlpullparser.getName();
+ if(filter.checkEnd(s))
+ endElement(xmlpullparser.getNamespace(), s, s);
+ }
+
+ private void startDocument(XmlPullParser xmlpullparser)
+ {
+ super.startDocument();
+ super.setDocumentLocator(new LocatorImpl());
+ }
+
+ private void startElement(XmlPullParser xmlpullparser)
+ {
+ String s = xmlpullparser.getName();
+ if(filter.checkStart(s))
+ {
+ AttributesImpl attributesimpl = new AttributesImpl();
+ for(int i = 0; i < xmlpullparser.getAttributeCount(); i++)
+ attributesimpl.addAttribute(xmlpullparser.getAttributeNamespace(i), xmlpullparser.getAttributeName(i), xmlpullparser.getAttributeName(i), xmlpullparser.getAttributeType(i), xmlpullparser.getAttributeValue(i));
+
+ startElement(xmlpullparser.getNamespace(), s, s, ((org.xml.sax.Attributes) (attributesimpl)));
+ }
+ checkForWatchedAttributes(xmlpullparser);
+ }
+
+ public Map getAttributeWatchValues()
+ {
+ return elemAttrs;
+ }
+
+ public List recordEvents(InputSource inputsource)
+ throws JoranException
+ {
+ java.io.InputStream inputstream;
+ inputstream = inputsource.getByteStream();
+ if(inputstream == null)
+ throw new IllegalArgumentException("Input source must specify an input stream");
+ AXmlResourceParser axmlresourceparser;
+ axmlresourceparser = new AXmlResourceParser(inputstream);
+ elemAttrs = null;
+_L5:
+ int i = axmlresourceparser.next();
+ if(i <= -1) goto _L2; else goto _L1
+_L1:
+ if(i != 0) goto _L4; else goto _L3
+_L3:
+ filter.reset();
+ startDocument(axmlresourceparser);
+ goto _L5
+ Exception exception;
+ exception;
+ addError(exception.getMessage(), exception);
+ throw new JoranException("Can't parse Android XML resource", exception);
+_L4:
+ if(1 != i)
+ break MISSING_BLOCK_LABEL_113;
+ filter.reset();
+ endDocument();
+_L2:
+ return getSaxEventList();
+ if(2 == i)
+ startElement(axmlresourceparser);
+ else
+ if(3 == i)
+ endElement(axmlresourceparser);
+ else
+ if(4 == i)
+ characters(axmlresourceparser);
+ goto _L5
+ }
+
+ public void setAttributeWatch(String s)
+ {
+ elemNameToWatch = s;
+ }
+
+ public transient void setFilter(String as[])
+ {
+ filter = new StatePassFilter(as);
+ }
+
+ private Map elemAttrs;
+ private String elemNameToWatch;
+ private StatePassFilter filter;
+ private int holderForStartAndLength[];
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/android/AndroidManifestPropertiesUtil.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/android/AndroidManifestPropertiesUtil.java
new file mode 100644
index 0000000..5143617
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/android/AndroidManifestPropertiesUtil.java
@@ -0,0 +1,91 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.android;
+
+import ch.qos.logback.core.Context;
+import ch.qos.logback.core.android.CommonPathUtil;
+import ch.qos.logback.core.joran.spi.JoranException;
+import ch.qos.logback.core.status.StatusManager;
+import ch.qos.logback.core.status.WarnStatus;
+import ch.qos.logback.core.util.Loader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
+
+// Referenced classes of package ch.qos.logback.classic.android:
+// ASaxEventRecorder
+
+public class AndroidManifestPropertiesUtil
+{
+
+ public AndroidManifestPropertiesUtil()
+ {
+ }
+
+ public static void setAndroidProperties(Context context)
+ throws JoranException
+ {
+ ASaxEventRecorder asaxeventrecorder;
+ StatusManager statusmanager;
+ InputStream inputstream;
+ asaxeventrecorder = new ASaxEventRecorder();
+ String as[] = new String[1];
+ as[0] = "-";
+ asaxeventrecorder.setFilter(as);
+ asaxeventrecorder.setAttributeWatch("manifest");
+ statusmanager = context.getStatusManager();
+ inputstream = Loader.getClassLoaderOfObject(context).getResourceAsStream("AndroidManifest.xml");
+ if(inputstream != null) goto _L2; else goto _L1
+_L1:
+ statusmanager.add(new WarnStatus("Could not find AndroidManifest.xml", context));
+_L6:
+ return;
+_L2:
+ asaxeventrecorder.recordEvents(inputstream);
+ Exception exception;
+ Map map;
+ Iterator iterator;
+ String s;
+ String s1;
+ try
+ {
+ inputstream.close();
+ }
+ catch(IOException ioexception1) { }
+ context.putProperty("EXT_DIR", CommonPathUtil.getMountedExternalStorageDirectoryPath());
+ map = asaxeventrecorder.getAttributeWatchValues();
+ iterator = map.keySet().iterator();
+ if(!iterator.hasNext())
+ break; /* Loop/switch isn't completed */
+ s1 = (String)iterator.next();
+ if(s1.equals("android:versionName"))
+ context.putProperty("VERSION_NAME", (String)map.get(s1));
+ else
+ if(s1.equals("android:versionCode"))
+ context.putProperty("VERSION_CODE", (String)map.get(s1));
+ else
+ if(s1.equals("package"))
+ context.putProperty("PACKAGE_NAME", (String)map.get(s1));
+ continue; /* Loop/switch isn't completed */
+ exception;
+ try
+ {
+ inputstream.close();
+ }
+ catch(IOException ioexception) { }
+ throw exception;
+ if(true) goto _L4; else goto _L3
+_L4:
+ break MISSING_BLOCK_LABEL_111;
+_L3:
+ s = (String)map.get("package");
+ if(s != null && s.length() > 0)
+ context.putProperty("DATA_DIR", CommonPathUtil.getFilesDirectoryPath(s));
+ else
+ statusmanager.add(new WarnStatus("Package name not found. Some properties cannot be set.", context));
+ if(true) goto _L6; else goto _L5
+_L5:
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/android/BasicLogcatConfigurator.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/android/BasicLogcatConfigurator.java
new file mode 100644
index 0000000..0c1175b
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/android/BasicLogcatConfigurator.java
@@ -0,0 +1,45 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.android;
+
+import ch.qos.logback.classic.Logger;
+import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
+import ch.qos.logback.core.status.InfoStatus;
+import ch.qos.logback.core.status.StatusManager;
+import org.slf4j.LoggerFactory;
+
+// Referenced classes of package ch.qos.logback.classic.android:
+// LogcatAppender
+
+public class BasicLogcatConfigurator
+{
+
+ private BasicLogcatConfigurator()
+ {
+ }
+
+ public static void configure(LoggerContext loggercontext)
+ {
+ StatusManager statusmanager = loggercontext.getStatusManager();
+ if(statusmanager != null)
+ statusmanager.add(new InfoStatus("Setting up default configuration.", loggercontext));
+ LogcatAppender logcatappender = new LogcatAppender();
+ logcatappender.setContext(loggercontext);
+ logcatappender.setName("logcat");
+ PatternLayoutEncoder patternlayoutencoder = new PatternLayoutEncoder();
+ patternlayoutencoder.setContext(loggercontext);
+ patternlayoutencoder.setPattern("%msg");
+ patternlayoutencoder.start();
+ logcatappender.setEncoder(patternlayoutencoder);
+ logcatappender.start();
+ loggercontext.getLogger("ROOT").addAppender(logcatappender);
+ }
+
+ public static void configureDefaultContext()
+ {
+ configure((LoggerContext)LoggerFactory.getILoggerFactory());
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/android/LogcatAppender.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/android/LogcatAppender.java
new file mode 100644
index 0000000..e8926b5
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/android/LogcatAppender.java
@@ -0,0 +1,148 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.android;
+
+import android.util.Log;
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.PatternLayout;
+import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.AppenderBase;
+import ch.qos.logback.core.Layout;
+
+public class LogcatAppender extends AppenderBase
+{
+
+ public LogcatAppender()
+ {
+ encoder = null;
+ tagEncoder = null;
+ checkLoggable = false;
+ }
+
+ public void append(ILoggingEvent iloggingevent)
+ {
+ if(isStarted()) goto _L2; else goto _L1
+_L1:
+ return;
+_L2:
+ String s = getTag(iloggingevent);
+ switch(iloggingevent.getLevel().levelInt)
+ {
+ case -2147483648:
+ case 5000:
+ if(!checkLoggable || Log.isLoggable(s, 2))
+ Log.v(s, encoder.getLayout().doLayout(iloggingevent));
+ break;
+
+ case 10000:
+ if(!checkLoggable || Log.isLoggable(s, 3))
+ Log.d(s, encoder.getLayout().doLayout(iloggingevent));
+ break;
+
+ case 20000:
+ if(!checkLoggable || Log.isLoggable(s, 4))
+ Log.i(s, encoder.getLayout().doLayout(iloggingevent));
+ break;
+
+ case 30000:
+ if(!checkLoggable || Log.isLoggable(s, 5))
+ Log.w(s, encoder.getLayout().doLayout(iloggingevent));
+ break;
+
+ case 40000:
+ if(!checkLoggable || Log.isLoggable(s, 6))
+ Log.e(s, encoder.getLayout().doLayout(iloggingevent));
+ break;
+ }
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ public volatile void append(Object obj)
+ {
+ append((ILoggingEvent)obj);
+ }
+
+ public boolean getCheckLoggable()
+ {
+ return checkLoggable;
+ }
+
+ public PatternLayoutEncoder getEncoder()
+ {
+ return encoder;
+ }
+
+ protected String getTag(ILoggingEvent iloggingevent)
+ {
+ String s;
+ if(tagEncoder != null)
+ s = tagEncoder.getLayout().doLayout(iloggingevent);
+ else
+ s = iloggingevent.getLoggerName();
+ if(checkLoggable && s.length() > 23)
+ s = (new StringBuilder()).append(s.substring(0, 22)).append("*").toString();
+ return s;
+ }
+
+ public PatternLayoutEncoder getTagEncoder()
+ {
+ return tagEncoder;
+ }
+
+ public void setCheckLoggable(boolean flag)
+ {
+ checkLoggable = flag;
+ }
+
+ public void setEncoder(PatternLayoutEncoder patternlayoutencoder)
+ {
+ encoder = patternlayoutencoder;
+ }
+
+ public void setTagEncoder(PatternLayoutEncoder patternlayoutencoder)
+ {
+ tagEncoder = patternlayoutencoder;
+ }
+
+ public void start()
+ {
+ if(encoder != null && encoder.getLayout() != null) goto _L2; else goto _L1
+_L1:
+ addError((new StringBuilder()).append("No layout set for the appender named [").append(name).append("].").toString());
+_L4:
+ return;
+_L2:
+ if(tagEncoder != null)
+ {
+ Layout layout = tagEncoder.getLayout();
+ if(layout == null)
+ {
+ addError((new StringBuilder()).append("No tag layout set for the appender named [").append(name).append("].").toString());
+ continue; /* Loop/switch isn't completed */
+ }
+ if(layout instanceof PatternLayout)
+ {
+ String s = tagEncoder.getPattern();
+ if(!s.contains("%nopex"))
+ {
+ tagEncoder.stop();
+ tagEncoder.setPattern((new StringBuilder()).append(s).append("%nopex").toString());
+ tagEncoder.start();
+ }
+ ((PatternLayout)layout).setPostCompileProcessor(null);
+ }
+ }
+ super.start();
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ private static final int MAX_TAG_LENGTH = 23;
+ private boolean checkLoggable;
+ private PatternLayoutEncoder encoder;
+ private PatternLayoutEncoder tagEncoder;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/android/SQLiteAppender.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/android/SQLiteAppender.java
new file mode 100644
index 0000000..7729f18
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/android/SQLiteAppender.java
@@ -0,0 +1,339 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.android;
+
+import android.database.sqlite.*;
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.db.SQLBuilder;
+import ch.qos.logback.classic.db.names.DBNameResolver;
+import ch.qos.logback.classic.db.names.DefaultDBNameResolver;
+import ch.qos.logback.classic.spi.*;
+import ch.qos.logback.core.Context;
+import ch.qos.logback.core.UnsynchronizedAppenderBase;
+import ch.qos.logback.core.android.CommonPathUtil;
+import java.io.File;
+import java.sql.SQLException;
+import java.util.*;
+
+public class SQLiteAppender extends UnsynchronizedAppenderBase
+{
+
+ public SQLiteAppender()
+ {
+ }
+
+ private String asStringTruncatedTo254(Object obj)
+ {
+ String s = null;
+ if(obj != null)
+ s = obj.toString();
+ if(s != null && s.length() > 254)
+ s = s.substring(0, 254);
+ if(s == null)
+ s = "";
+ return s;
+ }
+
+ private void bindCallerData(SQLiteStatement sqlitestatement, StackTraceElement astacktraceelement[])
+ throws SQLException
+ {
+ if(astacktraceelement != null && astacktraceelement.length > 0)
+ {
+ StackTraceElement stacktraceelement = astacktraceelement[0];
+ if(stacktraceelement != null)
+ {
+ sqlitestatement.bindString(11, stacktraceelement.getFileName());
+ sqlitestatement.bindString(12, stacktraceelement.getClassName());
+ sqlitestatement.bindString(13, stacktraceelement.getMethodName());
+ sqlitestatement.bindString(14, Integer.toString(stacktraceelement.getLineNumber()));
+ }
+ }
+ }
+
+ private void bindLoggingEvent(SQLiteStatement sqlitestatement, ILoggingEvent iloggingevent)
+ throws SQLException
+ {
+ sqlitestatement.bindLong(1, iloggingevent.getTimeStamp());
+ sqlitestatement.bindString(2, iloggingevent.getFormattedMessage());
+ sqlitestatement.bindString(3, iloggingevent.getLoggerName());
+ sqlitestatement.bindString(4, iloggingevent.getLevel().toString());
+ sqlitestatement.bindString(5, iloggingevent.getThreadName());
+ sqlitestatement.bindLong(6, computeReferenceMask(iloggingevent));
+ }
+
+ private void bindLoggingEventArguments(SQLiteStatement sqlitestatement, Object aobj[])
+ throws SQLException
+ {
+ int i = 0;
+ int j;
+ if(aobj != null)
+ j = aobj.length;
+ else
+ j = 0;
+ for(; i < j && i < 4; i++)
+ sqlitestatement.bindString(i + 7, asStringTruncatedTo254(aobj[i]));
+
+ }
+
+ private static short computeReferenceMask(ILoggingEvent iloggingevent)
+ {
+ short word0 = 0;
+ int i;
+ int j;
+ if(iloggingevent.getMDCPropertyMap() != null)
+ i = iloggingevent.getMDCPropertyMap().keySet().size();
+ else
+ i = 0;
+ if(iloggingevent.getLoggerContextVO().getPropertyMap() != null)
+ j = iloggingevent.getLoggerContextVO().getPropertyMap().size();
+ else
+ j = 0;
+ if(i > 0 || j > 0)
+ word0 = 1;
+ if(iloggingevent.getThrowableProxy() != null)
+ word0 |= 2;
+ return word0;
+ }
+
+ private void insertException(SQLiteStatement sqlitestatement, String s, short word0, long l)
+ throws SQLException
+ {
+ sqlitestatement.bindLong(1, l);
+ sqlitestatement.bindLong(2, word0);
+ sqlitestatement.bindString(3, s);
+ sqlitestatement.executeInsert();
+ }
+
+ private void insertProperties(Map map, long l)
+ throws SQLException
+ {
+ SQLiteStatement sqlitestatement;
+ if(map.size() <= 0)
+ break MISSING_BLOCK_LABEL_120;
+ sqlitestatement = db.compileStatement(insertPropertiesSQL);
+ for(Iterator iterator = map.entrySet().iterator(); iterator.hasNext(); sqlitestatement.executeInsert())
+ {
+ java.util.Map.Entry entry = (java.util.Map.Entry)iterator.next();
+ sqlitestatement.bindLong(1, l);
+ sqlitestatement.bindString(2, (String)entry.getKey());
+ sqlitestatement.bindString(3, (String)entry.getValue());
+ }
+
+ break MISSING_BLOCK_LABEL_115;
+ Exception exception;
+ exception;
+ sqlitestatement.close();
+ throw exception;
+ sqlitestatement.close();
+ }
+
+ private void insertThrowable(IThrowableProxy ithrowableproxy, long l)
+ throws SQLException
+ {
+ SQLiteStatement sqlitestatement;
+ int i;
+ sqlitestatement = db.compileStatement(insertExceptionSQL);
+ i = 0;
+_L2:
+ if(ithrowableproxy == null)
+ break; /* Loop/switch isn't completed */
+ IThrowableProxy ithrowableproxy1;
+ StringBuilder stringbuilder = new StringBuilder();
+ ThrowableProxyUtil.subjoinFirstLine(stringbuilder, ithrowableproxy);
+ String s = stringbuilder.toString();
+ short word0 = (short)(i + 1);
+ insertException(sqlitestatement, s, i, l);
+ int j = ithrowableproxy.getCommonFrames();
+ ch.qos.logback.classic.spi.StackTraceElementProxy astacktraceelementproxy[] = ithrowableproxy.getStackTraceElementProxyArray();
+ i = word0;
+ for(int k = 0; k < astacktraceelementproxy.length - j;)
+ {
+ StringBuilder stringbuilder1 = new StringBuilder();
+ stringbuilder1.append('\t');
+ ThrowableProxyUtil.subjoinSTEP(stringbuilder1, astacktraceelementproxy[k]);
+ String s1 = stringbuilder1.toString();
+ short word1 = (short)(i + 1);
+ insertException(sqlitestatement, s1, i, l);
+ k++;
+ i = word1;
+ }
+
+ if(j > 0)
+ {
+ StringBuilder stringbuilder2 = new StringBuilder();
+ stringbuilder2.append('\t').append("... ").append(j).append(" common frames omitted");
+ String s2 = stringbuilder2.toString();
+ short word2 = (short)(i + 1);
+ insertException(sqlitestatement, s2, i, l);
+ i = word2;
+ }
+ ithrowableproxy1 = ithrowableproxy.getCause();
+ ithrowableproxy = ithrowableproxy1;
+ if(true) goto _L2; else goto _L1
+_L1:
+ sqlitestatement.close();
+ return;
+ Exception exception;
+ exception;
+ sqlitestatement.close();
+ throw exception;
+ }
+
+ private Map mergePropertyMaps(ILoggingEvent iloggingevent)
+ {
+ HashMap hashmap = new HashMap();
+ Map map = iloggingevent.getLoggerContextVO().getPropertyMap();
+ if(map != null)
+ hashmap.putAll(map);
+ Map map1 = iloggingevent.getMDCPropertyMap();
+ if(map1 != null)
+ hashmap.putAll(map1);
+ return hashmap;
+ }
+
+ private void secondarySubAppend(ILoggingEvent iloggingevent, long l)
+ throws SQLException
+ {
+ insertProperties(mergePropertyMaps(iloggingevent), l);
+ if(iloggingevent.getThrowableProxy() != null)
+ insertThrowable(iloggingevent.getThrowableProxy(), l);
+ }
+
+ private long subAppend(ILoggingEvent iloggingevent, SQLiteStatement sqlitestatement)
+ throws SQLException
+ {
+ long l;
+ bindLoggingEvent(sqlitestatement, iloggingevent);
+ bindLoggingEventArguments(sqlitestatement, iloggingevent.getArgumentArray());
+ bindCallerData(sqlitestatement, iloggingevent.getCallerData());
+ l = -1L;
+ long l1 = sqlitestatement.executeInsert();
+ l = l1;
+_L2:
+ return l;
+ SQLiteException sqliteexception;
+ sqliteexception;
+ addWarn("Failed to insert loggingEvent", sqliteexception);
+ if(true) goto _L2; else goto _L1
+_L1:
+ }
+
+ public void append(ILoggingEvent iloggingevent)
+ {
+ if(!isStarted())
+ break MISSING_BLOCK_LABEL_116;
+ SQLiteStatement sqlitestatement = db.compileStatement(insertSQL);
+ db.beginTransaction();
+ long l = subAppend(iloggingevent, sqlitestatement);
+ if(l != -1L)
+ {
+ secondarySubAppend(iloggingevent, l);
+ db.setTransactionSuccessful();
+ }
+ if(db.inTransaction())
+ db.endTransaction();
+ sqlitestatement.close();
+ break MISSING_BLOCK_LABEL_116;
+ Exception exception;
+ exception;
+ if(db.inTransaction())
+ db.endTransaction();
+ sqlitestatement.close();
+ throw exception;
+ Throwable throwable;
+ throwable;
+ addError("Cannot append event", throwable);
+ }
+
+ public volatile void append(Object obj)
+ {
+ append((ILoggingEvent)obj);
+ }
+
+ protected void finalize()
+ throws Throwable
+ {
+ db.close();
+ }
+
+ public void setDbNameResolver(DBNameResolver dbnameresolver)
+ {
+ dbNameResolver = dbnameresolver;
+ }
+
+ public void start()
+ {
+ String s;
+ boolean flag;
+ s = null;
+ flag = true;
+ started = false;
+ if(getContext() != null)
+ s = getContext().getProperty("PACKAGE_NAME");
+ if(s != null && s.length() != 0) goto _L2; else goto _L1
+_L1:
+ addError("Cannot create database without package name");
+_L4:
+ return;
+_L2:
+ try
+ {
+ File file = new File(CommonPathUtil.getDatabaseDirectoryPath(s), "logback.db");
+ file.getParentFile().mkdirs();
+ db = SQLiteDatabase.openOrCreateDatabase(file.getPath(), null);
+ }
+ catch(SQLiteException sqliteexception)
+ {
+ addError("Cannot open database", sqliteexception);
+ flag = false;
+ }
+ if(flag)
+ {
+ if(dbNameResolver == null)
+ dbNameResolver = new DefaultDBNameResolver();
+ insertExceptionSQL = SQLBuilder.buildInsertExceptionSQL(dbNameResolver);
+ insertPropertiesSQL = SQLBuilder.buildInsertPropertiesSQL(dbNameResolver);
+ insertSQL = SQLBuilder.buildInsertSQL(dbNameResolver);
+ try
+ {
+ db.execSQL(SQLBuilder.buildCreateLoggingEventTableSQL(dbNameResolver));
+ db.execSQL(SQLBuilder.buildCreatePropertyTableSQL(dbNameResolver));
+ db.execSQL(SQLBuilder.buildCreateExceptionTableSQL(dbNameResolver));
+ super.start();
+ started = true;
+ }
+ catch(SQLiteException sqliteexception1)
+ {
+ addError("Cannot create database tables", sqliteexception1);
+ }
+ }
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ public void stop()
+ {
+ db.close();
+ }
+
+ private static final int ARG0_INDEX = 7;
+ private static final int CALLER_CLASS_INDEX = 12;
+ private static final int CALLER_FILENAME_INDEX = 11;
+ private static final int CALLER_LINE_INDEX = 14;
+ private static final int CALLER_METHOD_INDEX = 13;
+ private static final short EXCEPTION_EXISTS = 2;
+ private static final int FORMATTED_MESSAGE_INDEX = 2;
+ private static final int LEVEL_STRING_INDEX = 4;
+ private static final int LOGGER_NAME_INDEX = 3;
+ private static final short PROPERTIES_EXIST = 1;
+ private static final int REFERENCE_FLAG_INDEX = 6;
+ private static final int THREAD_NAME_INDEX = 5;
+ private static final int TIMESTMP_INDEX = 1;
+ private SQLiteDatabase db;
+ private DBNameResolver dbNameResolver;
+ private String insertExceptionSQL;
+ private String insertPropertiesSQL;
+ private String insertSQL;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/boolex/IEvaluator.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/boolex/IEvaluator.java
new file mode 100644
index 0000000..5a5b788
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/boolex/IEvaluator.java
@@ -0,0 +1,13 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.boolex;
+
+import ch.qos.logback.classic.spi.ILoggingEvent;
+
+public interface IEvaluator
+{
+
+ public abstract boolean doEvaluate(ILoggingEvent iloggingevent);
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/boolex/OnErrorEvaluator.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/boolex/OnErrorEvaluator.java
new file mode 100644
index 0000000..fbd5c58
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/boolex/OnErrorEvaluator.java
@@ -0,0 +1,35 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.boolex;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.boolex.EvaluationException;
+import ch.qos.logback.core.boolex.EventEvaluatorBase;
+
+public class OnErrorEvaluator extends EventEvaluatorBase
+{
+
+ public OnErrorEvaluator()
+ {
+ }
+
+ public boolean evaluate(ILoggingEvent iloggingevent)
+ throws NullPointerException, EvaluationException
+ {
+ boolean flag;
+ if(iloggingevent.getLevel().levelInt >= 40000)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ public volatile boolean evaluate(Object obj)
+ throws NullPointerException, EvaluationException
+ {
+ return evaluate((ILoggingEvent)obj);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/boolex/OnMarkerEvaluator.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/boolex/OnMarkerEvaluator.java
new file mode 100644
index 0000000..7c3258a
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/boolex/OnMarkerEvaluator.java
@@ -0,0 +1,55 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.boolex;
+
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.boolex.EvaluationException;
+import ch.qos.logback.core.boolex.EventEvaluatorBase;
+import java.util.*;
+import org.slf4j.Marker;
+
+public class OnMarkerEvaluator extends EventEvaluatorBase
+{
+
+ public OnMarkerEvaluator()
+ {
+ markerList = new ArrayList();
+ }
+
+ public void addMarker(String s)
+ {
+ markerList.add(s);
+ }
+
+ public boolean evaluate(ILoggingEvent iloggingevent)
+ throws NullPointerException, EvaluationException
+ {
+ Marker marker = iloggingevent.getMarker();
+ if(marker != null) goto _L2; else goto _L1
+_L1:
+ boolean flag = false;
+_L4:
+ return flag;
+_L2:
+ for(Iterator iterator = markerList.iterator(); iterator.hasNext();)
+ if(marker.contains((String)iterator.next()))
+ {
+ flag = true;
+ continue; /* Loop/switch isn't completed */
+ }
+
+ flag = false;
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ public volatile boolean evaluate(Object obj)
+ throws NullPointerException, EvaluationException
+ {
+ return evaluate((ILoggingEvent)obj);
+ }
+
+ List markerList;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/db/SQLBuilder.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/db/SQLBuilder.java
new file mode 100644
index 0000000..34a6498
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/db/SQLBuilder.java
@@ -0,0 +1,63 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.db;
+
+import ch.qos.logback.classic.db.names.ColumnName;
+import ch.qos.logback.classic.db.names.DBNameResolver;
+import ch.qos.logback.classic.db.names.TableName;
+
+public class SQLBuilder
+{
+
+ public SQLBuilder()
+ {
+ }
+
+ public static String buildCreateExceptionTableSQL(DBNameResolver dbnameresolver)
+ {
+ StringBuilder stringbuilder = new StringBuilder("CREATE TABLE IF NOT EXISTS ");
+ stringbuilder.append(dbnameresolver.getTableName(TableName.LOGGING_EVENT_EXCEPTION)).append(" (").append(dbnameresolver.getColumnName(ColumnName.EVENT_ID)).append(" BIGINT NOT NULL, ").append(dbnameresolver.getColumnName(ColumnName.I)).append(" SMALLINT NOT NULL, ").append(dbnameresolver.getColumnName(ColumnName.TRACE_LINE)).append(" VARCHAR(254) NOT NULL, ").append("PRIMARY KEY (").append(dbnameresolver.getColumnName(ColumnName.EVENT_ID)).append(", ").append(dbnameresolver.getColumnName(ColumnName.I)).append("), ").append("FOREIGN KEY (").append(dbnameresolver.getColumnName(ColumnName.EVENT_ID)).append(") ").append("REFERENCES ").append(dbnameresolver.getTableName(TableName.LOGGING_EVENT)).append(" (").append(dbnameresolver.getColumnName(ColumnName.EVENT_ID)).append(") ").append(")");
+ return stringbuilder.toString();
+ }
+
+ public static String buildCreateLoggingEventTableSQL(DBNameResolver dbnameresolver)
+ {
+ StringBuilder stringbuilder = new StringBuilder("CREATE TABLE IF NOT EXISTS ");
+ stringbuilder.append(dbnameresolver.getTableName(TableName.LOGGING_EVENT)).append(" (").append(dbnameresolver.getColumnName(ColumnName.TIMESTMP)).append(" BIGINT NOT NULL, ").append(dbnameresolver.getColumnName(ColumnName.FORMATTED_MESSAGE)).append(" TEXT NOT NULL, ").append(dbnameresolver.getColumnName(ColumnName.LOGGER_NAME)).append(" VARCHAR(254) NOT NULL, ").append(dbnameresolver.getColumnName(ColumnName.LEVEL_STRING)).append(" VARCHAR(254) NOT NULL, ").append(dbnameresolver.getColumnName(ColumnName.THREAD_NAME)).append(" VARCHAR(254), ").append(dbnameresolver.getColumnName(ColumnName.REFERENCE_FLAG)).append(" SMALLINT, ").append(dbnameresolver.getColumnName(ColumnName.ARG0)).append(" VARCHAR(254), ").append(dbnameresolver.getColumnName(ColumnName.ARG1)).append(" VARCHAR(254), ").append(dbnameresolver.getColumnName(ColumnName.ARG2)).append(" VARCHAR(254), ").append(dbnameresolver.getColumnName(ColumnName.ARG3)).append(" VARCHAR(254), ").append(dbnameresolver.getColumnName(ColumnName.CALLER_FILENAME)).append(" VARCHAR(254), ").append(dbnameresolver.getColumnName(ColumnName.CALLER_CLASS)).append(" VARCHAR(254), ").append(dbnameresolver.getColumnName(ColumnName.CALLER_METHOD)).append(" VARCHAR(254), ").append(dbnameresolver.getColumnName(ColumnName.CALLER_LINE)).append(" CHAR(4), ").append(dbnameresolver.getColumnName(ColumnName.EVENT_ID)).append(" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT").append(")");
+ return stringbuilder.toString();
+ }
+
+ public static String buildCreatePropertyTableSQL(DBNameResolver dbnameresolver)
+ {
+ StringBuilder stringbuilder = new StringBuilder("CREATE TABLE IF NOT EXISTS ");
+ stringbuilder.append(dbnameresolver.getTableName(TableName.LOGGING_EVENT_PROPERTY)).append(" (").append(dbnameresolver.getColumnName(ColumnName.EVENT_ID)).append(" BIGINT NOT NULL, ").append(dbnameresolver.getColumnName(ColumnName.MAPPED_KEY)).append(" VARCHAR(254) NOT NULL, ").append(dbnameresolver.getColumnName(ColumnName.MAPPED_VALUE)).append(" VARCHAR(254) NOT NULL, ").append("PRIMARY KEY (").append(dbnameresolver.getColumnName(ColumnName.EVENT_ID)).append(", ").append(dbnameresolver.getColumnName(ColumnName.MAPPED_KEY)).append("), ").append("FOREIGN KEY (").append(dbnameresolver.getColumnName(ColumnName.EVENT_ID)).append(") ").append("REFERENCES ").append(dbnameresolver.getTableName(TableName.LOGGING_EVENT)).append(" (").append(dbnameresolver.getColumnName(ColumnName.EVENT_ID)).append(") ").append(")");
+ return stringbuilder.toString();
+ }
+
+ public static String buildInsertExceptionSQL(DBNameResolver dbnameresolver)
+ {
+ StringBuilder stringbuilder = new StringBuilder("INSERT INTO ");
+ stringbuilder.append(dbnameresolver.getTableName(TableName.LOGGING_EVENT_EXCEPTION)).append(" (").append(dbnameresolver.getColumnName(ColumnName.EVENT_ID)).append(", ").append(dbnameresolver.getColumnName(ColumnName.I)).append(", ").append(dbnameresolver.getColumnName(ColumnName.TRACE_LINE)).append(") ").append("VALUES (?, ?, ?)");
+ return stringbuilder.toString();
+ }
+
+ public static String buildInsertPropertiesSQL(DBNameResolver dbnameresolver)
+ {
+ StringBuilder stringbuilder = new StringBuilder("INSERT INTO ");
+ stringbuilder.append(dbnameresolver.getTableName(TableName.LOGGING_EVENT_PROPERTY)).append(" (");
+ stringbuilder.append(dbnameresolver.getColumnName(ColumnName.EVENT_ID)).append(", ");
+ stringbuilder.append(dbnameresolver.getColumnName(ColumnName.MAPPED_KEY)).append(", ");
+ stringbuilder.append(dbnameresolver.getColumnName(ColumnName.MAPPED_VALUE)).append(") ");
+ stringbuilder.append("VALUES (?, ?, ?)");
+ return stringbuilder.toString();
+ }
+
+ public static String buildInsertSQL(DBNameResolver dbnameresolver)
+ {
+ StringBuilder stringbuilder = new StringBuilder("INSERT INTO ");
+ stringbuilder.append(dbnameresolver.getTableName(TableName.LOGGING_EVENT)).append(" (").append(dbnameresolver.getColumnName(ColumnName.TIMESTMP)).append(", ").append(dbnameresolver.getColumnName(ColumnName.FORMATTED_MESSAGE)).append(", ").append(dbnameresolver.getColumnName(ColumnName.LOGGER_NAME)).append(", ").append(dbnameresolver.getColumnName(ColumnName.LEVEL_STRING)).append(", ").append(dbnameresolver.getColumnName(ColumnName.THREAD_NAME)).append(", ").append(dbnameresolver.getColumnName(ColumnName.REFERENCE_FLAG)).append(", ").append(dbnameresolver.getColumnName(ColumnName.ARG0)).append(", ").append(dbnameresolver.getColumnName(ColumnName.ARG1)).append(", ").append(dbnameresolver.getColumnName(ColumnName.ARG2)).append(", ").append(dbnameresolver.getColumnName(ColumnName.ARG3)).append(", ").append(dbnameresolver.getColumnName(ColumnName.CALLER_FILENAME)).append(", ").append(dbnameresolver.getColumnName(ColumnName.CALLER_CLASS)).append(", ").append(dbnameresolver.getColumnName(ColumnName.CALLER_METHOD)).append(", ").append(dbnameresolver.getColumnName(ColumnName.CALLER_LINE)).append(") ").append("VALUES (?, ?, ? ,?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
+ return stringbuilder.toString();
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/db/names/ColumnName.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/db/names/ColumnName.java
new file mode 100644
index 0000000..9fb2dea
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/db/names/ColumnName.java
@@ -0,0 +1,90 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.db.names;
+
+
+public final class ColumnName extends Enum
+{
+
+ private ColumnName(String s, int i)
+ {
+ super(s, i);
+ }
+
+ public static ColumnName valueOf(String s)
+ {
+ return (ColumnName)Enum.valueOf(ch/qos/logback/classic/db/names/ColumnName, s);
+ }
+
+ public static ColumnName[] values()
+ {
+ return (ColumnName[])$VALUES.clone();
+ }
+
+ private static final ColumnName $VALUES[];
+ public static final ColumnName ARG0;
+ public static final ColumnName ARG1;
+ public static final ColumnName ARG2;
+ public static final ColumnName ARG3;
+ public static final ColumnName CALLER_CLASS;
+ public static final ColumnName CALLER_FILENAME;
+ public static final ColumnName CALLER_LINE;
+ public static final ColumnName CALLER_METHOD;
+ public static final ColumnName EVENT_ID;
+ public static final ColumnName FORMATTED_MESSAGE;
+ public static final ColumnName I;
+ public static final ColumnName LEVEL_STRING;
+ public static final ColumnName LOGGER_NAME;
+ public static final ColumnName MAPPED_KEY;
+ public static final ColumnName MAPPED_VALUE;
+ public static final ColumnName REFERENCE_FLAG;
+ public static final ColumnName THREAD_NAME;
+ public static final ColumnName TIMESTMP;
+ public static final ColumnName TRACE_LINE;
+
+ static
+ {
+ EVENT_ID = new ColumnName("EVENT_ID", 0);
+ TIMESTMP = new ColumnName("TIMESTMP", 1);
+ FORMATTED_MESSAGE = new ColumnName("FORMATTED_MESSAGE", 2);
+ LOGGER_NAME = new ColumnName("LOGGER_NAME", 3);
+ LEVEL_STRING = new ColumnName("LEVEL_STRING", 4);
+ THREAD_NAME = new ColumnName("THREAD_NAME", 5);
+ REFERENCE_FLAG = new ColumnName("REFERENCE_FLAG", 6);
+ ARG0 = new ColumnName("ARG0", 7);
+ ARG1 = new ColumnName("ARG1", 8);
+ ARG2 = new ColumnName("ARG2", 9);
+ ARG3 = new ColumnName("ARG3", 10);
+ CALLER_FILENAME = new ColumnName("CALLER_FILENAME", 11);
+ CALLER_CLASS = new ColumnName("CALLER_CLASS", 12);
+ CALLER_METHOD = new ColumnName("CALLER_METHOD", 13);
+ CALLER_LINE = new ColumnName("CALLER_LINE", 14);
+ MAPPED_KEY = new ColumnName("MAPPED_KEY", 15);
+ MAPPED_VALUE = new ColumnName("MAPPED_VALUE", 16);
+ I = new ColumnName("I", 17);
+ TRACE_LINE = new ColumnName("TRACE_LINE", 18);
+ ColumnName acolumnname[] = new ColumnName[19];
+ acolumnname[0] = EVENT_ID;
+ acolumnname[1] = TIMESTMP;
+ acolumnname[2] = FORMATTED_MESSAGE;
+ acolumnname[3] = LOGGER_NAME;
+ acolumnname[4] = LEVEL_STRING;
+ acolumnname[5] = THREAD_NAME;
+ acolumnname[6] = REFERENCE_FLAG;
+ acolumnname[7] = ARG0;
+ acolumnname[8] = ARG1;
+ acolumnname[9] = ARG2;
+ acolumnname[10] = ARG3;
+ acolumnname[11] = CALLER_FILENAME;
+ acolumnname[12] = CALLER_CLASS;
+ acolumnname[13] = CALLER_METHOD;
+ acolumnname[14] = CALLER_LINE;
+ acolumnname[15] = MAPPED_KEY;
+ acolumnname[16] = MAPPED_VALUE;
+ acolumnname[17] = I;
+ acolumnname[18] = TRACE_LINE;
+ $VALUES = acolumnname;
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/db/names/DBNameResolver.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/db/names/DBNameResolver.java
new file mode 100644
index 0000000..ec8847c
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/db/names/DBNameResolver.java
@@ -0,0 +1,14 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.db.names;
+
+
+public interface DBNameResolver
+{
+
+ public abstract String getColumnName(Enum enum);
+
+ public abstract String getTableName(Enum enum);
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/db/names/DefaultDBNameResolver.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/db/names/DefaultDBNameResolver.java
new file mode 100644
index 0000000..f24cb63
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/db/names/DefaultDBNameResolver.java
@@ -0,0 +1,28 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.db.names;
+
+
+// Referenced classes of package ch.qos.logback.classic.db.names:
+// DBNameResolver
+
+public class DefaultDBNameResolver
+ implements DBNameResolver
+{
+
+ public DefaultDBNameResolver()
+ {
+ }
+
+ public String getColumnName(Enum enum)
+ {
+ return enum.toString().toLowerCase();
+ }
+
+ public String getTableName(Enum enum)
+ {
+ return enum.toString().toLowerCase();
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/db/names/SimpleDBNameResolver.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/db/names/SimpleDBNameResolver.java
new file mode 100644
index 0000000..e00b139
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/db/names/SimpleDBNameResolver.java
@@ -0,0 +1,65 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.db.names;
+
+
+// Referenced classes of package ch.qos.logback.classic.db.names:
+// DBNameResolver
+
+public class SimpleDBNameResolver
+ implements DBNameResolver
+{
+
+ public SimpleDBNameResolver()
+ {
+ tableNamePrefix = "";
+ tableNameSuffix = "";
+ columnNamePrefix = "";
+ columnNameSuffix = "";
+ }
+
+ public String getColumnName(Enum enum)
+ {
+ return (new StringBuilder()).append(columnNamePrefix).append(enum.name().toLowerCase()).append(columnNameSuffix).toString();
+ }
+
+ public String getTableName(Enum enum)
+ {
+ return (new StringBuilder()).append(tableNamePrefix).append(enum.name().toLowerCase()).append(tableNameSuffix).toString();
+ }
+
+ public void setColumnNamePrefix(String s)
+ {
+ if(s == null)
+ s = "";
+ columnNamePrefix = s;
+ }
+
+ public void setColumnNameSuffix(String s)
+ {
+ if(s == null)
+ s = "";
+ columnNameSuffix = s;
+ }
+
+ public void setTableNamePrefix(String s)
+ {
+ if(s == null)
+ s = "";
+ tableNamePrefix = s;
+ }
+
+ public void setTableNameSuffix(String s)
+ {
+ if(s == null)
+ s = "";
+ tableNameSuffix = s;
+ }
+
+ private String columnNamePrefix;
+ private String columnNameSuffix;
+ private String tableNamePrefix;
+ private String tableNameSuffix;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/db/names/TableName.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/db/names/TableName.java
new file mode 100644
index 0000000..7074044
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/db/names/TableName.java
@@ -0,0 +1,42 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.db.names;
+
+
+public final class TableName extends Enum
+{
+
+ private TableName(String s, int i)
+ {
+ super(s, i);
+ }
+
+ public static TableName valueOf(String s)
+ {
+ return (TableName)Enum.valueOf(ch/qos/logback/classic/db/names/TableName, s);
+ }
+
+ public static TableName[] values()
+ {
+ return (TableName[])$VALUES.clone();
+ }
+
+ private static final TableName $VALUES[];
+ public static final TableName LOGGING_EVENT;
+ public static final TableName LOGGING_EVENT_EXCEPTION;
+ public static final TableName LOGGING_EVENT_PROPERTY;
+
+ static
+ {
+ LOGGING_EVENT = new TableName("LOGGING_EVENT", 0);
+ LOGGING_EVENT_PROPERTY = new TableName("LOGGING_EVENT_PROPERTY", 1);
+ LOGGING_EVENT_EXCEPTION = new TableName("LOGGING_EVENT_EXCEPTION", 2);
+ TableName atablename[] = new TableName[3];
+ atablename[0] = LOGGING_EVENT;
+ atablename[1] = LOGGING_EVENT_PROPERTY;
+ atablename[2] = LOGGING_EVENT_EXCEPTION;
+ $VALUES = atablename;
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/encoder/PatternLayoutEncoder.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/encoder/PatternLayoutEncoder.java
new file mode 100644
index 0000000..f985e28
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/encoder/PatternLayoutEncoder.java
@@ -0,0 +1,27 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.encoder;
+
+import ch.qos.logback.classic.PatternLayout;
+import ch.qos.logback.core.pattern.PatternLayoutEncoderBase;
+
+public class PatternLayoutEncoder extends PatternLayoutEncoderBase
+{
+
+ public PatternLayoutEncoder()
+ {
+ }
+
+ public void start()
+ {
+ PatternLayout patternlayout = new PatternLayout();
+ patternlayout.setContext(context);
+ patternlayout.setPattern(getPattern());
+ patternlayout.setOutputPatternAsHeader(outputPatternAsHeader);
+ patternlayout.start();
+ layout = patternlayout;
+ super.start();
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/filter/LevelFilter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/filter/LevelFilter.java
new file mode 100644
index 0000000..19e7b5f
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/filter/LevelFilter.java
@@ -0,0 +1,49 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.filter;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.filter.AbstractMatcherFilter;
+import ch.qos.logback.core.spi.FilterReply;
+
+public class LevelFilter extends AbstractMatcherFilter
+{
+
+ public LevelFilter()
+ {
+ }
+
+ public FilterReply decide(ILoggingEvent iloggingevent)
+ {
+ FilterReply filterreply;
+ if(!isStarted())
+ filterreply = FilterReply.NEUTRAL;
+ else
+ if(iloggingevent.getLevel().equals(level))
+ filterreply = onMatch;
+ else
+ filterreply = onMismatch;
+ return filterreply;
+ }
+
+ public volatile FilterReply decide(Object obj)
+ {
+ return decide((ILoggingEvent)obj);
+ }
+
+ public void setLevel(Level level1)
+ {
+ level = level1;
+ }
+
+ public void start()
+ {
+ if(level != null)
+ super.start();
+ }
+
+ Level level;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/filter/ThresholdFilter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/filter/ThresholdFilter.java
new file mode 100644
index 0000000..8aae8ee
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/filter/ThresholdFilter.java
@@ -0,0 +1,49 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.filter;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.filter.Filter;
+import ch.qos.logback.core.spi.FilterReply;
+
+public class ThresholdFilter extends Filter
+{
+
+ public ThresholdFilter()
+ {
+ }
+
+ public FilterReply decide(ILoggingEvent iloggingevent)
+ {
+ FilterReply filterreply;
+ if(!isStarted())
+ filterreply = FilterReply.NEUTRAL;
+ else
+ if(iloggingevent.getLevel().isGreaterOrEqual(level))
+ filterreply = FilterReply.NEUTRAL;
+ else
+ filterreply = FilterReply.DENY;
+ return filterreply;
+ }
+
+ public volatile FilterReply decide(Object obj)
+ {
+ return decide((ILoggingEvent)obj);
+ }
+
+ public void setLevel(String s)
+ {
+ level = Level.toLevel(s);
+ }
+
+ public void start()
+ {
+ if(level != null)
+ super.start();
+ }
+
+ Level level;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/html/DefaultCssBuilder.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/html/DefaultCssBuilder.java
new file mode 100644
index 0000000..30f82a1
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/html/DefaultCssBuilder.java
@@ -0,0 +1,47 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.html;
+
+import ch.qos.logback.core.CoreConstants;
+import ch.qos.logback.core.html.CssBuilder;
+
+public class DefaultCssBuilder
+ implements CssBuilder
+{
+
+ public DefaultCssBuilder()
+ {
+ }
+
+ public void addCss(StringBuilder stringbuilder)
+ {
+ stringbuilder.append("");
+ stringbuilder.append(CoreConstants.LINE_SEPARATOR);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/html/DefaultThrowableRenderer.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/html/DefaultThrowableRenderer.java
new file mode 100644
index 0000000..004aa7e
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/html/DefaultThrowableRenderer.java
@@ -0,0 +1,64 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.html;
+
+import ch.qos.logback.classic.spi.*;
+import ch.qos.logback.core.CoreConstants;
+import ch.qos.logback.core.helpers.Transform;
+import ch.qos.logback.core.html.IThrowableRenderer;
+
+public class DefaultThrowableRenderer
+ implements IThrowableRenderer
+{
+
+ public DefaultThrowableRenderer()
+ {
+ }
+
+ public void printFirstLine(StringBuilder stringbuilder, IThrowableProxy ithrowableproxy)
+ {
+ if(ithrowableproxy.getCommonFrames() > 0)
+ stringbuilder.append("
").append("Caused by: ");
+ stringbuilder.append(ithrowableproxy.getClassName()).append(": ").append(Transform.escapeTags(ithrowableproxy.getMessage()));
+ stringbuilder.append(CoreConstants.LINE_SEPARATOR);
+ }
+
+ public void render(StringBuilder stringbuilder, ILoggingEvent iloggingevent)
+ {
+ IThrowableProxy ithrowableproxy = iloggingevent.getThrowableProxy();
+ stringbuilder.append("");
+ for(; ithrowableproxy != null; ithrowableproxy = ithrowableproxy.getCause())
+ render(stringbuilder, ithrowableproxy);
+
+ stringbuilder.append(" |
");
+ }
+
+ void render(StringBuilder stringbuilder, IThrowableProxy ithrowableproxy)
+ {
+ printFirstLine(stringbuilder, ithrowableproxy);
+ int i = ithrowableproxy.getCommonFrames();
+ StackTraceElementProxy astacktraceelementproxy[] = ithrowableproxy.getStackTraceElementProxyArray();
+ for(int j = 0; j < astacktraceelementproxy.length - i; j++)
+ {
+ StackTraceElementProxy stacktraceelementproxy = astacktraceelementproxy[j];
+ stringbuilder.append("
");
+ stringbuilder.append(Transform.escapeTags(stacktraceelementproxy.toString()));
+ stringbuilder.append(CoreConstants.LINE_SEPARATOR);
+ }
+
+ if(i > 0)
+ {
+ stringbuilder.append("
");
+ stringbuilder.append("\t... ").append(i).append(" common frames omitted").append(CoreConstants.LINE_SEPARATOR);
+ }
+ }
+
+ public volatile void render(StringBuilder stringbuilder, Object obj)
+ {
+ render(stringbuilder, (ILoggingEvent)obj);
+ }
+
+ static final String TRACE_PREFIX = "
";
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/html/HTMLLayout.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/html/HTMLLayout.java
new file mode 100644
index 0000000..e6a9cc6
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/html/HTMLLayout.java
@@ -0,0 +1,117 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.html;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.PatternLayout;
+import ch.qos.logback.classic.pattern.MDCConverter;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.CoreConstants;
+import ch.qos.logback.core.html.HTMLLayoutBase;
+import ch.qos.logback.core.html.IThrowableRenderer;
+import ch.qos.logback.core.pattern.Converter;
+import java.util.Map;
+
+// Referenced classes of package ch.qos.logback.classic.html:
+// DefaultThrowableRenderer, DefaultCssBuilder
+
+public class HTMLLayout extends HTMLLayoutBase
+{
+
+ public HTMLLayout()
+ {
+ pattern = "%date%thread%level%logger%mdc%msg";
+ throwableRenderer = new DefaultThrowableRenderer();
+ cssBuilder = new DefaultCssBuilder();
+ }
+
+ private void appendEventToBuffer(StringBuilder stringbuilder, Converter converter, ILoggingEvent iloggingevent)
+ {
+ stringbuilder.append("");
+ converter.write(stringbuilder, iloggingevent);
+ stringbuilder.append(" | ");
+ stringbuilder.append(CoreConstants.LINE_SEPARATOR);
+ }
+
+ protected String computeConverterName(Converter converter)
+ {
+ String s;
+ if(converter instanceof MDCConverter)
+ {
+ s = ((MDCConverter)converter).getFirstOption();
+ if(s == null)
+ s = "MDC";
+ } else
+ {
+ s = super.computeConverterName(converter);
+ }
+ return s;
+ }
+
+ public String doLayout(ILoggingEvent iloggingevent)
+ {
+ StringBuilder stringbuilder = new StringBuilder();
+ startNewTableIfLimitReached(stringbuilder);
+ boolean flag = true;
+ long l = counter;
+ counter = l + 1L;
+ if((l & 1L) == 0L)
+ flag = false;
+ String s = iloggingevent.getLevel().toString().toLowerCase();
+ stringbuilder.append(CoreConstants.LINE_SEPARATOR);
+ stringbuilder.append("");
+ else
+ stringbuilder.append(" even\">");
+ stringbuilder.append(CoreConstants.LINE_SEPARATOR);
+ for(Converter converter = head; converter != null; converter = converter.getNext())
+ appendEventToBuffer(stringbuilder, converter, iloggingevent);
+
+ stringbuilder.append("
");
+ stringbuilder.append(CoreConstants.LINE_SEPARATOR);
+ if(iloggingevent.getThrowableProxy() != null)
+ throwableRenderer.render(stringbuilder, iloggingevent);
+ return stringbuilder.toString();
+ }
+
+ public volatile String doLayout(Object obj)
+ {
+ return doLayout((ILoggingEvent)obj);
+ }
+
+ protected Map getDefaultConverterMap()
+ {
+ return PatternLayout.defaultConverterMap;
+ }
+
+ public IThrowableRenderer getThrowableRenderer()
+ {
+ return throwableRenderer;
+ }
+
+ public void setThrowableRenderer(IThrowableRenderer ithrowablerenderer)
+ {
+ throwableRenderer = ithrowablerenderer;
+ }
+
+ public void start()
+ {
+ boolean flag = false;
+ if(throwableRenderer == null)
+ {
+ addError("ThrowableRender cannot be null.");
+ flag = true;
+ }
+ if(!flag)
+ super.start();
+ }
+
+ static final String DEFAULT_CONVERSION_PATTERN = "%date%thread%level%logger%mdc%msg";
+ IThrowableRenderer throwableRenderer;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/html/UrlCssBuilder.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/html/UrlCssBuilder.java
new file mode 100644
index 0000000..08e3e2e
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/html/UrlCssBuilder.java
@@ -0,0 +1,36 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.html;
+
+import ch.qos.logback.core.html.CssBuilder;
+
+public class UrlCssBuilder
+ implements CssBuilder
+{
+
+ public UrlCssBuilder()
+ {
+ url = "http://logback.qos.ch/css/classic.css";
+ }
+
+ public void addCss(StringBuilder stringbuilder)
+ {
+ stringbuilder.append("");
+ }
+
+ public String getUrl()
+ {
+ return url;
+ }
+
+ public void setUrl(String s)
+ {
+ url = s;
+ }
+
+ String url;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/joran/JoranConfigurator.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/joran/JoranConfigurator.java
new file mode 100644
index 0000000..879d69a
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/joran/JoranConfigurator.java
@@ -0,0 +1,53 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.joran;
+
+import ch.qos.logback.classic.joran.action.ConditionalIncludeAction;
+import ch.qos.logback.classic.joran.action.ConfigurationAction;
+import ch.qos.logback.classic.joran.action.ContextNameAction;
+import ch.qos.logback.classic.joran.action.FindIncludeAction;
+import ch.qos.logback.classic.joran.action.LevelAction;
+import ch.qos.logback.classic.joran.action.LoggerAction;
+import ch.qos.logback.classic.joran.action.LoggerContextListenerAction;
+import ch.qos.logback.classic.joran.action.ReceiverAction;
+import ch.qos.logback.classic.joran.action.RootLoggerAction;
+import ch.qos.logback.classic.sift.SiftAction;
+import ch.qos.logback.classic.util.DefaultNestedComponentRules;
+import ch.qos.logback.core.joran.JoranConfiguratorBase;
+import ch.qos.logback.core.joran.action.*;
+import ch.qos.logback.core.joran.spi.*;
+
+public class JoranConfigurator extends JoranConfiguratorBase
+{
+
+ public JoranConfigurator()
+ {
+ }
+
+ protected void addDefaultNestedComponentRegistryRules(DefaultNestedComponentRegistry defaultnestedcomponentregistry)
+ {
+ DefaultNestedComponentRules.addDefaultNestedComponentRegistryRules(defaultnestedcomponentregistry);
+ }
+
+ public void addInstanceRules(RuleStore rulestore)
+ {
+ super.addInstanceRules(rulestore);
+ rulestore.addRule(new ElementSelector("configuration"), new ConfigurationAction());
+ rulestore.addRule(new ElementSelector("configuration/contextName"), new ContextNameAction());
+ rulestore.addRule(new ElementSelector("configuration/contextListener"), new LoggerContextListenerAction());
+ rulestore.addRule(new ElementSelector("configuration/appender/sift"), new SiftAction());
+ rulestore.addRule(new ElementSelector("configuration/appender/sift/*"), new NOPAction());
+ rulestore.addRule(new ElementSelector("configuration/logger"), new LoggerAction());
+ rulestore.addRule(new ElementSelector("configuration/logger/level"), new LevelAction());
+ rulestore.addRule(new ElementSelector("configuration/root"), new RootLoggerAction());
+ rulestore.addRule(new ElementSelector("configuration/root/level"), new LevelAction());
+ rulestore.addRule(new ElementSelector("configuration/logger/appender-ref"), new AppenderRefAction());
+ rulestore.addRule(new ElementSelector("configuration/root/appender-ref"), new AppenderRefAction());
+ rulestore.addRule(new ElementSelector("configuration/include"), new IncludeAction());
+ rulestore.addRule(new ElementSelector("configuration/includes"), new FindIncludeAction());
+ rulestore.addRule(new ElementSelector("configuration/includes/include"), new ConditionalIncludeAction());
+ rulestore.addRule(new ElementSelector("configuration/receiver"), new ReceiverAction());
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/joran/action/ConditionalIncludeAction.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/joran/action/ConditionalIncludeAction.java
new file mode 100644
index 0000000..a70404e
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/joran/action/ConditionalIncludeAction.java
@@ -0,0 +1,89 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.joran.action;
+
+import ch.qos.logback.core.joran.action.AbstractIncludeAction;
+import ch.qos.logback.core.joran.spi.*;
+import java.io.FileNotFoundException;
+import java.net.URL;
+import java.net.UnknownHostException;
+import org.xml.sax.Attributes;
+
+public class ConditionalIncludeAction extends AbstractIncludeAction
+{
+ class State
+ {
+
+ URL getUrl()
+ {
+ return url;
+ }
+
+ void setUrl(URL url1)
+ {
+ url = url1;
+ }
+
+ final ConditionalIncludeAction this$0;
+ private URL url;
+
+ State()
+ {
+ this$0 = ConditionalIncludeAction.this;
+ super();
+ }
+ }
+
+
+ public ConditionalIncludeAction()
+ {
+ }
+
+ private URL peekPath(InterpretationContext interpretationcontext)
+ {
+ if(interpretationcontext.isEmpty()) goto _L2; else goto _L1
+_L1:
+ Object obj = interpretationcontext.peekObject();
+ if(!(obj instanceof State)) goto _L2; else goto _L3
+_L3:
+ URL url = ((State)obj).getUrl();
+ if(url == null) goto _L2; else goto _L4
+_L4:
+ return url;
+_L2:
+ url = null;
+ if(true) goto _L4; else goto _L5
+_L5:
+ }
+
+ private URL pushPath(InterpretationContext interpretationcontext, URL url)
+ {
+ State state = new State();
+ state.setUrl(url);
+ interpretationcontext.pushObject(state);
+ return url;
+ }
+
+ public void begin(InterpretationContext interpretationcontext, String s, Attributes attributes)
+ throws ActionException
+ {
+ if(peekPath(interpretationcontext) == null)
+ super.begin(interpretationcontext, s, attributes);
+ }
+
+ protected void handleError(String s, Exception exception)
+ {
+ if(exception != null && !(exception instanceof FileNotFoundException) && !(exception instanceof UnknownHostException))
+ addWarn(s, exception);
+ else
+ addInfo(s);
+ }
+
+ protected void processInclude(InterpretationContext interpretationcontext, URL url)
+ throws JoranException
+ {
+ pushPath(interpretationcontext, url);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/joran/action/ConfigurationAction.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/joran/action/ConfigurationAction.java
new file mode 100644
index 0000000..1af383e
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/joran/action/ConfigurationAction.java
@@ -0,0 +1,86 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.joran.action;
+
+import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.classic.turbo.ReconfigureOnChangeFilter;
+import ch.qos.logback.core.joran.action.Action;
+import ch.qos.logback.core.joran.spi.InterpretationContext;
+import ch.qos.logback.core.status.OnConsoleStatusListener;
+import ch.qos.logback.core.util.*;
+import org.xml.sax.Attributes;
+
+public class ConfigurationAction extends Action
+{
+
+ public ConfigurationAction()
+ {
+ }
+
+ public void begin(InterpretationContext interpretationcontext, String s, Attributes attributes)
+ {
+ String s1 = OptionHelper.getSystemProperty("logback.debug");
+ if(s1 == null)
+ s1 = interpretationcontext.subst(attributes.getValue("debug"));
+ if(OptionHelper.isEmpty(s1) || s1.equalsIgnoreCase("false") || s1.equalsIgnoreCase("null"))
+ addInfo("debug attribute not set");
+ else
+ OnConsoleStatusListener.addNewInstanceToContext(context);
+ processScanAttrib(interpretationcontext, attributes);
+ (new ContextUtil(context)).addHostNameAsProperty();
+ interpretationcontext.pushObject(getContext());
+ }
+
+ public void end(InterpretationContext interpretationcontext, String s)
+ {
+ addInfo("End of configuration.");
+ interpretationcontext.popObject();
+ }
+
+ String getSystemProperty(String s)
+ {
+ String s2 = System.getProperty(s);
+ String s1 = s2;
+_L2:
+ return s1;
+ SecurityException securityexception;
+ securityexception;
+ s1 = null;
+ if(true) goto _L2; else goto _L1
+_L1:
+ }
+
+ void processScanAttrib(InterpretationContext interpretationcontext, Attributes attributes)
+ {
+ String s = interpretationcontext.subst(attributes.getValue("scan"));
+ if(!OptionHelper.isEmpty(s) && !"false".equalsIgnoreCase(s))
+ {
+ ReconfigureOnChangeFilter reconfigureonchangefilter = new ReconfigureOnChangeFilter();
+ reconfigureonchangefilter.setContext(context);
+ String s1 = interpretationcontext.subst(attributes.getValue("scanPeriod"));
+ LoggerContext loggercontext;
+ if(!OptionHelper.isEmpty(s1))
+ try
+ {
+ Duration duration = Duration.valueOf(s1);
+ reconfigureonchangefilter.setRefreshPeriod(duration.getMilliseconds());
+ addInfo((new StringBuilder()).append("Setting ReconfigureOnChangeFilter scanning period to ").append(duration).toString());
+ }
+ catch(NumberFormatException numberformatexception)
+ {
+ addError((new StringBuilder()).append("Error while converting [").append(s).append("] to long").toString(), numberformatexception);
+ }
+ reconfigureonchangefilter.start();
+ loggercontext = (LoggerContext)context;
+ addInfo("Adding ReconfigureOnChangeFilter as a turbo filter");
+ loggercontext.addTurboFilter(reconfigureonchangefilter);
+ }
+ }
+
+ static final String DEBUG_SYSTEM_PROPERTY_KEY = "logback.debug";
+ static final String INTERNAL_DEBUG_ATTR = "debug";
+ static final String SCAN_ATTR = "scan";
+ static final String SCAN_PERIOD_ATTR = "scanPeriod";
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/joran/action/ContextNameAction.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/joran/action/ContextNameAction.java
new file mode 100644
index 0000000..1e49c7f
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/joran/action/ContextNameAction.java
@@ -0,0 +1,40 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.joran.action;
+
+import ch.qos.logback.core.Context;
+import ch.qos.logback.core.joran.action.Action;
+import ch.qos.logback.core.joran.spi.InterpretationContext;
+import org.xml.sax.Attributes;
+
+public class ContextNameAction extends Action
+{
+
+ public ContextNameAction()
+ {
+ }
+
+ public void begin(InterpretationContext interpretationcontext, String s, Attributes attributes)
+ {
+ }
+
+ public void body(InterpretationContext interpretationcontext, String s)
+ {
+ String s1;
+ s1 = interpretationcontext.subst(s);
+ addInfo((new StringBuilder()).append("Setting logger context name as [").append(s1).append("]").toString());
+ context.setName(s1);
+_L1:
+ return;
+ IllegalStateException illegalstateexception;
+ illegalstateexception;
+ addError((new StringBuilder()).append("Failed to rename context [").append(context.getName()).append("] as [").append(s1).append("]").toString(), illegalstateexception);
+ goto _L1
+ }
+
+ public void end(InterpretationContext interpretationcontext, String s)
+ {
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/joran/action/FindIncludeAction.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/joran/action/FindIncludeAction.java
new file mode 100644
index 0000000..f9514cd
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/joran/action/FindIncludeAction.java
@@ -0,0 +1,66 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.joran.action;
+
+import ch.qos.logback.classic.android.ASaxEventRecorder;
+import ch.qos.logback.core.joran.action.IncludeAction;
+import ch.qos.logback.core.joran.event.SaxEventRecorder;
+import ch.qos.logback.core.joran.spi.*;
+import java.io.InputStream;
+import java.net.URL;
+import org.xml.sax.Attributes;
+
+public class FindIncludeAction extends IncludeAction
+{
+
+ public FindIncludeAction()
+ {
+ setEventOffset(1);
+ }
+
+ public void begin(InterpretationContext interpretationcontext, String s, Attributes attributes)
+ throws ActionException
+ {
+ }
+
+ protected SaxEventRecorder createRecorder(InputStream inputstream, URL url)
+ {
+ Object obj;
+ if(url.toString().endsWith("AndroidManifest.xml"))
+ {
+ obj = new ASaxEventRecorder();
+ String as[] = new String[1];
+ as[0] = "logback";
+ ((ASaxEventRecorder) (obj)).setFilter(as);
+ } else
+ {
+ obj = new SaxEventRecorder(getContext());
+ }
+ return ((SaxEventRecorder) (obj));
+ }
+
+ public void end(InterpretationContext interpretationcontext, String s)
+ throws ActionException
+ {
+ URL url;
+ if(interpretationcontext.isEmpty() || !(interpretationcontext.peekObject() instanceof ConditionalIncludeAction.State))
+ break MISSING_BLOCK_LABEL_69;
+ url = ((ConditionalIncludeAction.State)interpretationcontext.popObject()).getUrl();
+ if(url == null)
+ break MISSING_BLOCK_LABEL_108;
+ addInfo((new StringBuilder()).append("Path found [").append(url.toString()).append("]").toString());
+ processInclude(interpretationcontext, url);
+_L1:
+ return;
+ JoranException joranexception;
+ joranexception;
+ addError((new StringBuilder()).append("Failed to process include [").append(url.toString()).append("]").toString(), joranexception);
+ goto _L1
+ addInfo("No paths found from includes");
+ goto _L1
+ }
+
+ private static final int EVENT_OFFSET = 1;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/joran/action/LevelAction.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/joran/action/LevelAction.java
new file mode 100644
index 0000000..f5f34d2
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/joran/action/LevelAction.java
@@ -0,0 +1,50 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.joran.action;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.Logger;
+import ch.qos.logback.core.joran.action.Action;
+import ch.qos.logback.core.joran.spi.InterpretationContext;
+import org.xml.sax.Attributes;
+
+public class LevelAction extends Action
+{
+
+ public LevelAction()
+ {
+ inError = false;
+ }
+
+ public void begin(InterpretationContext interpretationcontext, String s, Attributes attributes)
+ {
+ Object obj = interpretationcontext.peekObject();
+ if(!(obj instanceof Logger))
+ {
+ inError = true;
+ addError("For element , could not find a logger at the top of execution stack.");
+ } else
+ {
+ Logger logger = (Logger)obj;
+ String s1 = logger.getName();
+ String s2 = interpretationcontext.subst(attributes.getValue("value"));
+ if("INHERITED".equalsIgnoreCase(s2) || "NULL".equalsIgnoreCase(s2))
+ logger.setLevel(null);
+ else
+ logger.setLevel(Level.toLevel(s2, Level.DEBUG));
+ addInfo((new StringBuilder()).append(s1).append(" level set to ").append(logger.getLevel()).toString());
+ }
+ }
+
+ public void end(InterpretationContext interpretationcontext, String s)
+ {
+ }
+
+ public void finish(InterpretationContext interpretationcontext)
+ {
+ }
+
+ boolean inError;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/joran/action/LoggerAction.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/joran/action/LoggerAction.java
new file mode 100644
index 0000000..11d0238
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/joran/action/LoggerAction.java
@@ -0,0 +1,82 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.joran.action;
+
+import ch.qos.logback.classic.*;
+import ch.qos.logback.core.joran.action.Action;
+import ch.qos.logback.core.joran.spi.InterpretationContext;
+import ch.qos.logback.core.util.OptionHelper;
+import org.xml.sax.Attributes;
+
+public class LoggerAction extends Action
+{
+
+ public LoggerAction()
+ {
+ inError = false;
+ }
+
+ public void begin(InterpretationContext interpretationcontext, String s, Attributes attributes)
+ {
+ inError = false;
+ logger = null;
+ LoggerContext loggercontext = (LoggerContext)context;
+ String s1 = interpretationcontext.subst(attributes.getValue("name"));
+ if(OptionHelper.isEmpty(s1))
+ {
+ inError = true;
+ String s4 = getLineColStr(interpretationcontext);
+ addError((new StringBuilder()).append("No 'name' attribute in element ").append(s).append(", around ").append(s4).toString());
+ } else
+ {
+ logger = loggercontext.getLogger(s1);
+ String s2 = interpretationcontext.subst(attributes.getValue("level"));
+ String s3;
+ if(!OptionHelper.isEmpty(s2))
+ if("INHERITED".equalsIgnoreCase(s2) || "NULL".equalsIgnoreCase(s2))
+ {
+ addInfo((new StringBuilder()).append("Setting level of logger [").append(s1).append("] to null, i.e. INHERITED").toString());
+ logger.setLevel(null);
+ } else
+ {
+ Level level = Level.toLevel(s2);
+ addInfo((new StringBuilder()).append("Setting level of logger [").append(s1).append("] to ").append(level).toString());
+ logger.setLevel(level);
+ }
+ s3 = interpretationcontext.subst(attributes.getValue("additivity"));
+ if(!OptionHelper.isEmpty(s3))
+ {
+ boolean flag = Boolean.valueOf(s3).booleanValue();
+ addInfo((new StringBuilder()).append("Setting additivity of logger [").append(s1).append("] to ").append(flag).toString());
+ logger.setAdditive(flag);
+ }
+ interpretationcontext.pushObject(logger);
+ }
+ }
+
+ public void end(InterpretationContext interpretationcontext, String s)
+ {
+ if(!inError)
+ {
+ Object obj = interpretationcontext.peekObject();
+ if(obj != logger)
+ {
+ addWarn((new StringBuilder()).append("The object on the top the of the stack is not ").append(logger).append(" pushed earlier").toString());
+ addWarn((new StringBuilder()).append("It is: ").append(obj).toString());
+ } else
+ {
+ interpretationcontext.popObject();
+ }
+ }
+ }
+
+ public void finish(InterpretationContext interpretationcontext)
+ {
+ }
+
+ public static final String LEVEL_ATTRIBUTE = "level";
+ boolean inError;
+ Logger logger;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/joran/action/LoggerContextListenerAction.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/joran/action/LoggerContextListenerAction.java
new file mode 100644
index 0000000..552b816
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/joran/action/LoggerContextListenerAction.java
@@ -0,0 +1,73 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.joran.action;
+
+import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.classic.spi.LoggerContextListener;
+import ch.qos.logback.core.joran.action.Action;
+import ch.qos.logback.core.joran.spi.ActionException;
+import ch.qos.logback.core.joran.spi.InterpretationContext;
+import ch.qos.logback.core.spi.ContextAware;
+import ch.qos.logback.core.spi.LifeCycle;
+import ch.qos.logback.core.util.OptionHelper;
+import org.xml.sax.Attributes;
+
+public class LoggerContextListenerAction extends Action
+{
+
+ public LoggerContextListenerAction()
+ {
+ inError = false;
+ }
+
+ public void begin(InterpretationContext interpretationcontext, String s, Attributes attributes)
+ throws ActionException
+ {
+ inError = false;
+ String s1 = attributes.getValue("class");
+ if(OptionHelper.isEmpty(s1))
+ {
+ addError("Mandatory \"class\" attribute not set for element");
+ inError = true;
+ } else
+ {
+ try
+ {
+ lcl = (LoggerContextListener)OptionHelper.instantiateByClassName(s1, ch/qos/logback/classic/spi/LoggerContextListener, context);
+ if(lcl instanceof ContextAware)
+ ((ContextAware)lcl).setContext(context);
+ interpretationcontext.pushObject(lcl);
+ addInfo((new StringBuilder()).append("Adding LoggerContextListener of type [").append(s1).append("] to the object stack").toString());
+ }
+ catch(Exception exception)
+ {
+ inError = true;
+ addError((new StringBuilder()).append("Could not create LoggerContextListener of type ").append(s1).append("].").toString(), exception);
+ }
+ }
+ }
+
+ public void end(InterpretationContext interpretationcontext, String s)
+ throws ActionException
+ {
+ if(!inError)
+ if(interpretationcontext.peekObject() != lcl)
+ {
+ addWarn("The object on the top the of the stack is not the LoggerContextListener pushed earlier.");
+ } else
+ {
+ if(lcl instanceof LifeCycle)
+ {
+ ((LifeCycle)lcl).start();
+ addInfo("Starting LoggerContextListener");
+ }
+ ((LoggerContext)context).addListener(lcl);
+ interpretationcontext.popObject();
+ }
+ }
+
+ boolean inError;
+ LoggerContextListener lcl;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/joran/action/ReceiverAction.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/joran/action/ReceiverAction.java
new file mode 100644
index 0000000..8e96b96
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/joran/action/ReceiverAction.java
@@ -0,0 +1,66 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.joran.action;
+
+import ch.qos.logback.classic.net.ReceiverBase;
+import ch.qos.logback.core.Context;
+import ch.qos.logback.core.joran.action.Action;
+import ch.qos.logback.core.joran.spi.ActionException;
+import ch.qos.logback.core.joran.spi.InterpretationContext;
+import ch.qos.logback.core.util.OptionHelper;
+import org.xml.sax.Attributes;
+
+public class ReceiverAction extends Action
+{
+
+ public ReceiverAction()
+ {
+ }
+
+ public void begin(InterpretationContext interpretationcontext, String s, Attributes attributes)
+ throws ActionException
+ {
+ String s1 = attributes.getValue("class");
+ if(!OptionHelper.isEmpty(s1)) goto _L2; else goto _L1
+_L1:
+ addError((new StringBuilder()).append("Missing class name for receiver. Near [").append(s).append("] line ").append(getLineNumber(interpretationcontext)).toString());
+ inError = true;
+_L4:
+ return;
+_L2:
+ try
+ {
+ addInfo((new StringBuilder()).append("About to instantiate receiver of type [").append(s1).append("]").toString());
+ receiver = (ReceiverBase)OptionHelper.instantiateByClassName(s1, ch/qos/logback/classic/net/ReceiverBase, context);
+ receiver.setContext(context);
+ interpretationcontext.pushObject(receiver);
+ }
+ catch(Exception exception)
+ {
+ inError = true;
+ addError((new StringBuilder()).append("Could not create a receiver of type [").append(s1).append("].").toString(), exception);
+ throw new ActionException(exception);
+ }
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ public void end(InterpretationContext interpretationcontext, String s)
+ throws ActionException
+ {
+ if(!inError)
+ {
+ interpretationcontext.getContext().register(receiver);
+ receiver.start();
+ if(interpretationcontext.peekObject() != receiver)
+ addWarn("The object at the of the stack is not the remote pushed earlier.");
+ else
+ interpretationcontext.popObject();
+ }
+ }
+
+ private boolean inError;
+ private ReceiverBase receiver;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/joran/action/RootLoggerAction.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/joran/action/RootLoggerAction.java
new file mode 100644
index 0000000..7f8d6ac
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/joran/action/RootLoggerAction.java
@@ -0,0 +1,57 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.joran.action;
+
+import ch.qos.logback.classic.*;
+import ch.qos.logback.core.joran.action.Action;
+import ch.qos.logback.core.joran.spi.InterpretationContext;
+import ch.qos.logback.core.util.OptionHelper;
+import org.xml.sax.Attributes;
+
+public class RootLoggerAction extends Action
+{
+
+ public RootLoggerAction()
+ {
+ inError = false;
+ }
+
+ public void begin(InterpretationContext interpretationcontext, String s, Attributes attributes)
+ {
+ inError = false;
+ root = ((LoggerContext)context).getLogger("ROOT");
+ String s1 = interpretationcontext.subst(attributes.getValue("level"));
+ if(!OptionHelper.isEmpty(s1))
+ {
+ Level level = Level.toLevel(s1);
+ addInfo((new StringBuilder()).append("Setting level of ROOT logger to ").append(level).toString());
+ root.setLevel(level);
+ }
+ interpretationcontext.pushObject(root);
+ }
+
+ public void end(InterpretationContext interpretationcontext, String s)
+ {
+ if(!inError)
+ {
+ Object obj = interpretationcontext.peekObject();
+ if(obj != root)
+ {
+ addWarn("The object on the top the of the stack is not the root logger");
+ addWarn((new StringBuilder()).append("It is: ").append(obj).toString());
+ } else
+ {
+ interpretationcontext.popObject();
+ }
+ }
+ }
+
+ public void finish(InterpretationContext interpretationcontext)
+ {
+ }
+
+ boolean inError;
+ Logger root;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/jul/JULHelper.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/jul/JULHelper.java
new file mode 100644
index 0000000..2029973
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/jul/JULHelper.java
@@ -0,0 +1,94 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.jul;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.Logger;
+
+public class JULHelper
+{
+
+ public JULHelper()
+ {
+ }
+
+ public static java.util.logging.Level asJULLevel(Level level)
+ {
+ if(level == null)
+ throw new IllegalArgumentException("Unexpected level [null]");
+ level.levelInt;
+ JVM INSTR lookupswitch 7: default 84
+ // -2147483648: 116
+ // 5000: 122
+ // 10000: 129
+ // 20000: 136
+ // 30000: 143
+ // 40000: 150
+ // 2147483647: 157;
+ goto _L1 _L2 _L3 _L4 _L5 _L6 _L7 _L8
+_L1:
+ throw new IllegalArgumentException((new StringBuilder()).append("Unexpected level [").append(level).append("]").toString());
+_L2:
+ java.util.logging.Level level1 = java.util.logging.Level.ALL;
+_L10:
+ return level1;
+_L3:
+ level1 = java.util.logging.Level.FINEST;
+ continue; /* Loop/switch isn't completed */
+_L4:
+ level1 = java.util.logging.Level.FINE;
+ continue; /* Loop/switch isn't completed */
+_L5:
+ level1 = java.util.logging.Level.INFO;
+ continue; /* Loop/switch isn't completed */
+_L6:
+ level1 = java.util.logging.Level.WARNING;
+ continue; /* Loop/switch isn't completed */
+_L7:
+ level1 = java.util.logging.Level.SEVERE;
+ continue; /* Loop/switch isn't completed */
+_L8:
+ level1 = java.util.logging.Level.OFF;
+ if(true) goto _L10; else goto _L9
+_L9:
+ }
+
+ public static java.util.logging.Logger asJULLogger(Logger logger)
+ {
+ return asJULLogger(logger.getName());
+ }
+
+ public static java.util.logging.Logger asJULLogger(String s)
+ {
+ return java.util.logging.Logger.getLogger(asJULLoggerName(s));
+ }
+
+ public static String asJULLoggerName(String s)
+ {
+ if("ROOT".equals(s))
+ s = "";
+ return s;
+ }
+
+ public static final boolean isRegularNonRootLogger(java.util.logging.Logger logger)
+ {
+ boolean flag;
+ flag = false;
+ break MISSING_BLOCK_LABEL_2;
+ if(logger != null && !logger.getName().equals(""))
+ flag = true;
+ return flag;
+ }
+
+ public static final boolean isRoot(java.util.logging.Logger logger)
+ {
+ boolean flag;
+ if(logger == null)
+ flag = false;
+ else
+ flag = logger.getName().equals("");
+ return flag;
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/jul/LevelChangePropagator.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/jul/LevelChangePropagator.java
new file mode 100644
index 0000000..0ac9cd4
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/jul/LevelChangePropagator.java
@@ -0,0 +1,121 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.jul;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.classic.spi.LoggerContextListener;
+import ch.qos.logback.core.spi.ContextAwareBase;
+import ch.qos.logback.core.spi.LifeCycle;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import java.util.logging.LogManager;
+import java.util.logging.Logger;
+
+// Referenced classes of package ch.qos.logback.classic.jul:
+// JULHelper
+
+public class LevelChangePropagator extends ContextAwareBase
+ implements LoggerContextListener, LifeCycle
+{
+
+ public LevelChangePropagator()
+ {
+ julLoggerSet = new HashSet();
+ isStarted = false;
+ resetJUL = false;
+ }
+
+ private void propagate(ch.qos.logback.classic.Logger logger, Level level)
+ {
+ addInfo((new StringBuilder()).append("Propagating ").append(level).append(" level on ").append(logger).append(" onto the JUL framework").toString());
+ Logger logger1 = JULHelper.asJULLogger(logger);
+ julLoggerSet.add(logger1);
+ logger1.setLevel(JULHelper.asJULLevel(level));
+ }
+
+ private void propagateExistingLoggerLevels()
+ {
+ Iterator iterator = ((LoggerContext)context).getLoggerList().iterator();
+ do
+ {
+ if(!iterator.hasNext())
+ break;
+ ch.qos.logback.classic.Logger logger = (ch.qos.logback.classic.Logger)iterator.next();
+ if(logger.getLevel() != null)
+ propagate(logger, logger.getLevel());
+ } while(true);
+ }
+
+ public boolean isResetResistant()
+ {
+ return false;
+ }
+
+ public boolean isStarted()
+ {
+ return isStarted;
+ }
+
+ public void onLevelChange(ch.qos.logback.classic.Logger logger, Level level)
+ {
+ propagate(logger, level);
+ }
+
+ public void onReset(LoggerContext loggercontext)
+ {
+ }
+
+ public void onStart(LoggerContext loggercontext)
+ {
+ }
+
+ public void onStop(LoggerContext loggercontext)
+ {
+ }
+
+ public void resetJULLevels()
+ {
+ LogManager logmanager = LogManager.getLogManager();
+ Enumeration enumeration = logmanager.getLoggerNames();
+ do
+ {
+ if(!enumeration.hasMoreElements())
+ break;
+ String s = (String)enumeration.nextElement();
+ Logger logger = logmanager.getLogger(s);
+ if(JULHelper.isRegularNonRootLogger(logger) && logger.getLevel() != null)
+ {
+ addInfo((new StringBuilder()).append("Setting level of jul logger [").append(s).append("] to null").toString());
+ logger.setLevel(null);
+ }
+ } while(true);
+ }
+
+ public void setResetJUL(boolean flag)
+ {
+ resetJUL = flag;
+ }
+
+ public void start()
+ {
+ if(resetJUL)
+ resetJULLevels();
+ propagateExistingLoggerLevels();
+ isStarted = true;
+ }
+
+ public void stop()
+ {
+ isStarted = false;
+ }
+
+ boolean isStarted;
+ private Set julLoggerSet;
+ boolean resetJUL;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/log4j/XMLLayout.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/log4j/XMLLayout.java
new file mode 100644
index 0000000..ee4522a
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/log4j/XMLLayout.java
@@ -0,0 +1,138 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.log4j;
+
+import ch.qos.logback.classic.spi.*;
+import ch.qos.logback.core.LayoutBase;
+import ch.qos.logback.core.helpers.Transform;
+import java.util.*;
+
+public class XMLLayout extends LayoutBase
+{
+
+ public XMLLayout()
+ {
+ buf = new StringBuilder(256);
+ locationInfo = false;
+ properties = false;
+ }
+
+ public String doLayout(ILoggingEvent iloggingevent)
+ {
+ IThrowableProxy ithrowableproxy;
+ if(buf.capacity() > 2048)
+ buf = new StringBuilder(256);
+ else
+ buf.setLength(0);
+ buf.append("\r\n");
+ buf.append(" \r\n");
+ ithrowableproxy = iloggingevent.getThrowableProxy();
+ if(ithrowableproxy != null)
+ {
+ StackTraceElementProxy astacktraceelementproxy[] = ithrowableproxy.getStackTraceElementProxyArray();
+ buf.append(" \r\n");
+ }
+ if(locationInfo)
+ {
+ StackTraceElement astacktraceelement[] = iloggingevent.getCallerData();
+ if(astacktraceelement != null && astacktraceelement.length > 0)
+ {
+ StackTraceElement stacktraceelement = astacktraceelement[0];
+ buf.append(" \r\n");
+ }
+ }
+ if(getProperties())
+ {
+ Map map = iloggingevent.getMDCPropertyMap();
+ if(map != null && map.size() != 0)
+ {
+ Set set = map.entrySet();
+ buf.append(" ");
+ for(Iterator iterator = set.iterator(); iterator.hasNext(); buf.append(" />"))
+ {
+ java.util.Map.Entry entry = (java.util.Map.Entry)iterator.next();
+ buf.append("\r\n ");
+ }
+ }
+ buf.append("\r\n\r\n\r\n");
+ return buf.toString();
+ }
+
+ public volatile String doLayout(Object obj)
+ {
+ return doLayout((ILoggingEvent)obj);
+ }
+
+ public String getContentType()
+ {
+ return "text/xml";
+ }
+
+ public boolean getLocationInfo()
+ {
+ return locationInfo;
+ }
+
+ public boolean getProperties()
+ {
+ return properties;
+ }
+
+ public void setLocationInfo(boolean flag)
+ {
+ locationInfo = flag;
+ }
+
+ public void setProperties(boolean flag)
+ {
+ properties = flag;
+ }
+
+ public void start()
+ {
+ super.start();
+ }
+
+ private static final int DEFAULT_SIZE = 256;
+ private static final int UPPER_LIMIT = 2048;
+ private StringBuilder buf;
+ private boolean locationInfo;
+ private boolean properties;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/LoggingEventPreSerializationTransformer.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/LoggingEventPreSerializationTransformer.java
new file mode 100644
index 0000000..568d195
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/LoggingEventPreSerializationTransformer.java
@@ -0,0 +1,39 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.net;
+
+import ch.qos.logback.classic.spi.*;
+import ch.qos.logback.core.spi.PreSerializationTransformer;
+import java.io.Serializable;
+
+public class LoggingEventPreSerializationTransformer
+ implements PreSerializationTransformer
+{
+
+ public LoggingEventPreSerializationTransformer()
+ {
+ }
+
+ public Serializable transform(ILoggingEvent iloggingevent)
+ {
+ Object obj;
+ if(iloggingevent == null)
+ obj = null;
+ else
+ if(iloggingevent instanceof LoggingEvent)
+ obj = LoggingEventVO.build(iloggingevent);
+ else
+ if(iloggingevent instanceof LoggingEventVO)
+ obj = (LoggingEventVO)iloggingevent;
+ else
+ throw new IllegalArgumentException((new StringBuilder()).append("Unsupported type ").append(iloggingevent.getClass().getName()).toString());
+ return ((Serializable) (obj));
+ }
+
+ public volatile Serializable transform(Object obj)
+ {
+ return transform((ILoggingEvent)obj);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/ReceiverBase.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/ReceiverBase.java
new file mode 100644
index 0000000..bf939cb
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/ReceiverBase.java
@@ -0,0 +1,65 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.net;
+
+import ch.qos.logback.core.Context;
+import ch.qos.logback.core.spi.ContextAwareBase;
+import ch.qos.logback.core.spi.LifeCycle;
+import java.util.concurrent.ExecutorService;
+
+public abstract class ReceiverBase extends ContextAwareBase
+ implements LifeCycle
+{
+
+ public ReceiverBase()
+ {
+ }
+
+ protected abstract Runnable getRunnableTask();
+
+ public final boolean isStarted()
+ {
+ return started;
+ }
+
+ protected abstract void onStop();
+
+ protected abstract boolean shouldStart();
+
+ public final void start()
+ {
+ if(!isStarted()) goto _L2; else goto _L1
+_L1:
+ return;
+_L2:
+ if(getContext() == null)
+ throw new IllegalStateException("context not set");
+ if(shouldStart())
+ {
+ getContext().getExecutorService().execute(getRunnableTask());
+ started = true;
+ }
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ public final void stop()
+ {
+ if(isStarted())
+ {
+ try
+ {
+ onStop();
+ }
+ catch(RuntimeException runtimeexception)
+ {
+ addError((new StringBuilder()).append("on stop: ").append(runtimeexception).toString(), runtimeexception);
+ }
+ started = false;
+ }
+ }
+
+ private boolean started;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/SMTPAppender.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/SMTPAppender.java
new file mode 100644
index 0000000..f4f94bf
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/SMTPAppender.java
@@ -0,0 +1,121 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.net;
+
+import ch.qos.logback.classic.ClassicConstants;
+import ch.qos.logback.classic.PatternLayout;
+import ch.qos.logback.classic.boolex.OnErrorEvaluator;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.Layout;
+import ch.qos.logback.core.boolex.EventEvaluator;
+import ch.qos.logback.core.helpers.CyclicBuffer;
+import ch.qos.logback.core.net.SMTPAppenderBase;
+import ch.qos.logback.core.pattern.PatternLayoutBase;
+import org.slf4j.Marker;
+
+public class SMTPAppender extends SMTPAppenderBase
+{
+
+ public SMTPAppender()
+ {
+ includeCallerData = false;
+ }
+
+ public SMTPAppender(EventEvaluator eventevaluator)
+ {
+ includeCallerData = false;
+ eventEvaluator = eventevaluator;
+ }
+
+ protected boolean eventMarksEndOfLife(ILoggingEvent iloggingevent)
+ {
+ Marker marker = iloggingevent.getMarker();
+ boolean flag;
+ if(marker == null)
+ flag = false;
+ else
+ flag = marker.contains(ClassicConstants.FINALIZE_SESSION_MARKER);
+ return flag;
+ }
+
+ protected volatile boolean eventMarksEndOfLife(Object obj)
+ {
+ return eventMarksEndOfLife((ILoggingEvent)obj);
+ }
+
+ protected void fillBuffer(CyclicBuffer cyclicbuffer, StringBuffer stringbuffer)
+ {
+ int i = cyclicbuffer.length();
+ for(int j = 0; j < i; j++)
+ {
+ ILoggingEvent iloggingevent = (ILoggingEvent)cyclicbuffer.get();
+ stringbuffer.append(layout.doLayout(iloggingevent));
+ }
+
+ }
+
+ public boolean isIncludeCallerData()
+ {
+ return includeCallerData;
+ }
+
+ protected PatternLayout makeNewToPatternLayout(String s)
+ {
+ PatternLayout patternlayout = new PatternLayout();
+ patternlayout.setPattern((new StringBuilder()).append(s).append("%nopex").toString());
+ return patternlayout;
+ }
+
+ protected volatile PatternLayoutBase makeNewToPatternLayout(String s)
+ {
+ return makeNewToPatternLayout(s);
+ }
+
+ protected Layout makeSubjectLayout(String s)
+ {
+ if(s == null)
+ s = "%logger{20} - %m";
+ PatternLayout patternlayout = new PatternLayout();
+ patternlayout.setContext(getContext());
+ patternlayout.setPattern(s);
+ patternlayout.setPostCompileProcessor(null);
+ patternlayout.start();
+ return patternlayout;
+ }
+
+ public void setIncludeCallerData(boolean flag)
+ {
+ includeCallerData = flag;
+ }
+
+ public void start()
+ {
+ if(eventEvaluator == null)
+ {
+ OnErrorEvaluator onerrorevaluator = new OnErrorEvaluator();
+ onerrorevaluator.setContext(getContext());
+ onerrorevaluator.setName("onError");
+ onerrorevaluator.start();
+ eventEvaluator = onerrorevaluator;
+ }
+ super.start();
+ }
+
+ protected void subAppend(CyclicBuffer cyclicbuffer, ILoggingEvent iloggingevent)
+ {
+ if(includeCallerData)
+ iloggingevent.getCallerData();
+ iloggingevent.prepareForDeferredProcessing();
+ cyclicbuffer.add(iloggingevent);
+ }
+
+ protected volatile void subAppend(CyclicBuffer cyclicbuffer, Object obj)
+ {
+ subAppend(cyclicbuffer, (ILoggingEvent)obj);
+ }
+
+ static final String DEFAULT_SUBJECT_PATTERN = "%logger{20} - %m";
+ private boolean includeCallerData;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/SSLSocketAppender.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/SSLSocketAppender.java
new file mode 100644
index 0000000..8fe6f0a
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/SSLSocketAppender.java
@@ -0,0 +1,58 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.net;
+
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.net.AbstractSSLSocketAppender;
+import ch.qos.logback.core.spi.PreSerializationTransformer;
+import java.net.InetAddress;
+
+// Referenced classes of package ch.qos.logback.classic.net:
+// LoggingEventPreSerializationTransformer
+
+public class SSLSocketAppender extends AbstractSSLSocketAppender
+{
+
+ public SSLSocketAppender()
+ {
+ pst = new LoggingEventPreSerializationTransformer();
+ }
+
+ public SSLSocketAppender(String s, int i)
+ {
+ super(s, i);
+ pst = new LoggingEventPreSerializationTransformer();
+ }
+
+ public SSLSocketAppender(InetAddress inetaddress, int i)
+ {
+ super(inetaddress.getHostAddress(), i);
+ pst = new LoggingEventPreSerializationTransformer();
+ }
+
+ public PreSerializationTransformer getPST()
+ {
+ return pst;
+ }
+
+ protected void postProcessEvent(ILoggingEvent iloggingevent)
+ {
+ if(includeCallerData)
+ iloggingevent.getCallerData();
+ }
+
+ protected volatile void postProcessEvent(Object obj)
+ {
+ postProcessEvent((ILoggingEvent)obj);
+ }
+
+ public void setIncludeCallerData(boolean flag)
+ {
+ includeCallerData = flag;
+ }
+
+ private boolean includeCallerData;
+ private final PreSerializationTransformer pst;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/SSLSocketReceiver.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/SSLSocketReceiver.java
new file mode 100644
index 0000000..e9af026
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/SSLSocketReceiver.java
@@ -0,0 +1,60 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.net;
+
+import ch.qos.logback.core.net.ssl.*;
+import javax.net.SocketFactory;
+import javax.net.ssl.SSLContext;
+
+// Referenced classes of package ch.qos.logback.classic.net:
+// SocketReceiver
+
+public class SSLSocketReceiver extends SocketReceiver
+ implements SSLComponent
+{
+
+ public SSLSocketReceiver()
+ {
+ }
+
+ protected SocketFactory getSocketFactory()
+ {
+ return socketFactory;
+ }
+
+ public SSLConfiguration getSsl()
+ {
+ if(ssl == null)
+ ssl = new SSLConfiguration();
+ return ssl;
+ }
+
+ public void setSsl(SSLConfiguration sslconfiguration)
+ {
+ ssl = sslconfiguration;
+ }
+
+ protected boolean shouldStart()
+ {
+ boolean flag1;
+ SSLContext sslcontext = getSsl().createContext(this);
+ SSLParametersConfiguration sslparametersconfiguration = getSsl().getParameters();
+ sslparametersconfiguration.setContext(getContext());
+ socketFactory = new ConfigurableSSLSocketFactory(sslparametersconfiguration, sslcontext.getSocketFactory());
+ flag1 = super.shouldStart();
+ boolean flag = flag1;
+_L2:
+ return flag;
+ Exception exception;
+ exception;
+ addError(exception.getMessage(), exception);
+ flag = false;
+ if(true) goto _L2; else goto _L1
+_L1:
+ }
+
+ private SocketFactory socketFactory;
+ private SSLConfiguration ssl;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/SimpleSSLSocketServer.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/SimpleSSLSocketServer.java
new file mode 100644
index 0000000..dacc278
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/SimpleSSLSocketServer.java
@@ -0,0 +1,53 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.net;
+
+import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.core.net.ssl.ConfigurableSSLServerSocketFactory;
+import ch.qos.logback.core.net.ssl.SSLParametersConfiguration;
+import java.security.NoSuchAlgorithmException;
+import javax.net.ServerSocketFactory;
+import javax.net.ssl.SSLContext;
+
+// Referenced classes of package ch.qos.logback.classic.net:
+// SimpleSocketServer
+
+public class SimpleSSLSocketServer extends SimpleSocketServer
+{
+
+ public SimpleSSLSocketServer(LoggerContext loggercontext, int i)
+ throws NoSuchAlgorithmException
+ {
+ this(loggercontext, i, SSLContext.getDefault());
+ }
+
+ public SimpleSSLSocketServer(LoggerContext loggercontext, int i, SSLContext sslcontext)
+ {
+ super(loggercontext, i);
+ if(sslcontext == null)
+ {
+ throw new NullPointerException("SSL context required");
+ } else
+ {
+ SSLParametersConfiguration sslparametersconfiguration = new SSLParametersConfiguration();
+ sslparametersconfiguration.setContext(loggercontext);
+ socketFactory = new ConfigurableSSLServerSocketFactory(sslparametersconfiguration, sslcontext.getServerSocketFactory());
+ return;
+ }
+ }
+
+ public static void main(String args[])
+ throws Exception
+ {
+ doMain(ch/qos/logback/classic/net/SimpleSSLSocketServer, args);
+ }
+
+ protected ServerSocketFactory getServerSocketFactory()
+ {
+ return socketFactory;
+ }
+
+ private final ServerSocketFactory socketFactory;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/SimpleSocketServer.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/SimpleSocketServer.java
new file mode 100644
index 0000000..08f3c5b
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/SimpleSocketServer.java
@@ -0,0 +1,233 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.net;
+
+import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.classic.joran.JoranConfigurator;
+import ch.qos.logback.core.joran.spi.JoranException;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.util.*;
+import java.util.concurrent.CountDownLatch;
+import javax.net.ServerSocketFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+// Referenced classes of package ch.qos.logback.classic.net:
+// SocketNode
+
+public class SimpleSocketServer extends Thread
+{
+
+ public SimpleSocketServer(LoggerContext loggercontext, int i)
+ {
+ logger = LoggerFactory.getLogger(ch/qos/logback/classic/net/SimpleSocketServer);
+ closed = false;
+ socketNodeList = new ArrayList();
+ lc = loggercontext;
+ port = i;
+ }
+
+ public static void configureLC(LoggerContext loggercontext, String s)
+ throws JoranException
+ {
+ JoranConfigurator joranconfigurator = new JoranConfigurator();
+ loggercontext.reset();
+ joranconfigurator.setContext(loggercontext);
+ joranconfigurator.doConfigure(s);
+ }
+
+ protected static void doMain(Class class1, String as[])
+ throws Exception
+ {
+ int i;
+ String s;
+ LoggerContext loggercontext;
+ if(as.length == 2)
+ {
+ i = parsePortNumber(as[0]);
+ } else
+ {
+ usage("Wrong number of arguments.");
+ i = -1;
+ }
+ s = as[1];
+ loggercontext = (LoggerContext)LoggerFactory.getILoggerFactory();
+ configureLC(loggercontext, s);
+ (new SimpleSocketServer(loggercontext, i)).start();
+ }
+
+ public static void main(String args[])
+ throws Exception
+ {
+ doMain(ch/qos/logback/classic/net/SimpleSocketServer, args);
+ }
+
+ static int parsePortNumber(String s)
+ {
+ int j = Integer.parseInt(s);
+ int i = j;
+_L2:
+ return i;
+ NumberFormatException numberformatexception;
+ numberformatexception;
+ numberformatexception.printStackTrace();
+ usage((new StringBuilder()).append("Could not interpret port number [").append(s).append("].").toString());
+ i = -1;
+ if(true) goto _L2; else goto _L1
+_L1:
+ }
+
+ static void usage(String s)
+ {
+ System.err.println(s);
+ System.err.println((new StringBuilder()).append("Usage: java ").append(ch/qos/logback/classic/net/SimpleSocketServer.getName()).append(" port configFile").toString());
+ System.exit(1);
+ }
+
+ public void close()
+ {
+ closed = true;
+ if(serverSocket == null)
+ break MISSING_BLOCK_LABEL_24;
+ serverSocket.close();
+ serverSocket = null;
+_L2:
+ logger.info("closing this server");
+ List list = socketNodeList;
+ list;
+ JVM INSTR monitorenter ;
+ for(Iterator iterator = socketNodeList.iterator(); iterator.hasNext(); ((SocketNode)iterator.next()).close());
+ break MISSING_BLOCK_LABEL_114;
+ Exception exception;
+ exception;
+ throw exception;
+ IOException ioexception;
+ ioexception;
+ logger.error("Failed to close serverSocket", ioexception);
+ serverSocket = null;
+ if(true) goto _L2; else goto _L1
+_L1:
+ Exception exception1;
+ exception1;
+ serverSocket = null;
+ throw exception1;
+ list;
+ JVM INSTR monitorexit ;
+ if(socketNodeList.size() != 0)
+ logger.warn("Was expecting a 0-sized socketNodeList after server shutdown");
+ return;
+ }
+
+ protected String getClientThreadName(Socket socket)
+ {
+ Object aobj[] = new Object[1];
+ aobj[0] = socket.getRemoteSocketAddress();
+ return String.format("Logback SocketNode (client: %s)", aobj);
+ }
+
+ public CountDownLatch getLatch()
+ {
+ return latch;
+ }
+
+ protected ServerSocketFactory getServerSocketFactory()
+ {
+ return ServerSocketFactory.getDefault();
+ }
+
+ protected String getServerThreadName()
+ {
+ Object aobj[] = new Object[2];
+ aobj[0] = getClass().getSimpleName();
+ aobj[1] = Integer.valueOf(port);
+ return String.format("Logback %s (port %d)", aobj);
+ }
+
+ public boolean isClosed()
+ {
+ return closed;
+ }
+
+ public void run()
+ {
+ String s = Thread.currentThread().getName();
+ String s1 = getServerThreadName();
+ Thread.currentThread().setName(s1);
+ logger.info((new StringBuilder()).append("Listening on port ").append(port).toString());
+ serverSocket = getServerSocketFactory().createServerSocket(port);
+_L3:
+ if(closed) goto _L2; else goto _L1
+_L1:
+ Socket socket;
+ SocketNode socketnode;
+ logger.info("Waiting to accept a new client.");
+ signalAlmostReadiness();
+ socket = serverSocket.accept();
+ logger.info((new StringBuilder()).append("Connected to client at ").append(socket.getInetAddress()).toString());
+ logger.info("Starting new socket node.");
+ socketnode = new SocketNode(this, socket, lc);
+ synchronized(socketNodeList)
+ {
+ socketNodeList.add(socketnode);
+ }
+ (new Thread(socketnode, getClientThreadName(socket))).start();
+ goto _L3
+ Exception exception1;
+ exception1;
+ if(!closed) goto _L5; else goto _L4
+_L4:
+ logger.info("Exception in run method for a closed server. This is normal.");
+_L7:
+ Thread.currentThread().setName(s);
+_L6:
+ return;
+ exception2;
+ list;
+ JVM INSTR monitorexit ;
+ throw exception2;
+ Exception exception;
+ exception;
+ Thread.currentThread().setName(s);
+ throw exception;
+_L2:
+ Thread.currentThread().setName(s);
+ if(true) goto _L6; else goto _L5
+_L5:
+ logger.error("Unexpected failure in run method", exception1);
+ goto _L7
+ }
+
+ void setLatch(CountDownLatch countdownlatch)
+ {
+ latch = countdownlatch;
+ }
+
+ void signalAlmostReadiness()
+ {
+ if(latch != null && latch.getCount() != 0L)
+ latch.countDown();
+ }
+
+ public void socketNodeClosing(SocketNode socketnode)
+ {
+ logger.debug("Removing {}", socketnode);
+ List list = socketNodeList;
+ list;
+ JVM INSTR monitorenter ;
+ socketNodeList.remove(socketnode);
+ return;
+ }
+
+ private boolean closed;
+ private CountDownLatch latch;
+ private final LoggerContext lc;
+ Logger logger;
+ private final int port;
+ private ServerSocket serverSocket;
+ private List socketNodeList;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/SocketAppender.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/SocketAppender.java
new file mode 100644
index 0000000..d1f8ea8
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/SocketAppender.java
@@ -0,0 +1,59 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.net;
+
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.net.AbstractSocketAppender;
+import ch.qos.logback.core.spi.PreSerializationTransformer;
+import java.net.InetAddress;
+
+// Referenced classes of package ch.qos.logback.classic.net:
+// LoggingEventPreSerializationTransformer
+
+public class SocketAppender extends AbstractSocketAppender
+{
+
+ public SocketAppender()
+ {
+ includeCallerData = false;
+ }
+
+ public SocketAppender(String s, int i)
+ {
+ super(s, i);
+ includeCallerData = false;
+ }
+
+ public SocketAppender(InetAddress inetaddress, int i)
+ {
+ super(inetaddress.getHostAddress(), i);
+ includeCallerData = false;
+ }
+
+ public PreSerializationTransformer getPST()
+ {
+ return pst;
+ }
+
+ protected void postProcessEvent(ILoggingEvent iloggingevent)
+ {
+ if(includeCallerData)
+ iloggingevent.getCallerData();
+ }
+
+ protected volatile void postProcessEvent(Object obj)
+ {
+ postProcessEvent((ILoggingEvent)obj);
+ }
+
+ public void setIncludeCallerData(boolean flag)
+ {
+ includeCallerData = flag;
+ }
+
+ private static final PreSerializationTransformer pst = new LoggingEventPreSerializationTransformer();
+ private boolean includeCallerData;
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/SocketNode.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/SocketNode.java
new file mode 100644
index 0000000..6fe04c3
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/SocketNode.java
@@ -0,0 +1,109 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.net;
+
+import ch.qos.logback.classic.Logger;
+import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import java.io.*;
+import java.net.*;
+
+// Referenced classes of package ch.qos.logback.classic.net:
+// SimpleSocketServer
+
+public class SocketNode
+ implements Runnable
+{
+
+ public SocketNode(SimpleSocketServer simplesocketserver, Socket socket1, LoggerContext loggercontext)
+ {
+ closed = false;
+ socketServer = simplesocketserver;
+ socket = socket1;
+ remoteSocketAddress = socket1.getRemoteSocketAddress();
+ context = loggercontext;
+ logger = loggercontext.getLogger(ch/qos/logback/classic/net/SocketNode);
+ }
+
+ void close()
+ {
+ if(!closed) goto _L2; else goto _L1
+_L1:
+ return;
+_L2:
+ closed = true;
+ if(ois == null) goto _L1; else goto _L3
+_L3:
+ ois.close();
+ ois = null;
+ goto _L1
+ IOException ioexception;
+ ioexception;
+ logger.warn("Could not close connection.", ioexception);
+ ois = null;
+ goto _L1
+ Exception exception;
+ exception;
+ ois = null;
+ throw exception;
+ }
+
+ public void run()
+ {
+ try
+ {
+ ois = new ObjectInputStream(new BufferedInputStream(socket.getInputStream()));
+ }
+ catch(Exception exception)
+ {
+ logger.error((new StringBuilder()).append("Could not open ObjectInputStream to ").append(socket).toString(), exception);
+ closed = true;
+ }
+ try
+ {
+ do
+ {
+ if(closed)
+ break;
+ ILoggingEvent iloggingevent = (ILoggingEvent)ois.readObject();
+ Logger logger1 = context.getLogger(iloggingevent.getLoggerName());
+ if(logger1.isEnabledFor(iloggingevent.getLevel()))
+ logger1.callAppenders(iloggingevent);
+ } while(true);
+ }
+ catch(EOFException eofexception)
+ {
+ logger.info("Caught java.io.EOFException closing connection.");
+ }
+ catch(SocketException socketexception)
+ {
+ logger.info("Caught java.net.SocketException closing connection.");
+ }
+ catch(IOException ioexception)
+ {
+ logger.info((new StringBuilder()).append("Caught java.io.IOException: ").append(ioexception).toString());
+ logger.info("Closing connection.");
+ }
+ catch(Exception exception1)
+ {
+ logger.error("Unexpected exception. Closing connection.", exception1);
+ }
+ socketServer.socketNodeClosing(this);
+ close();
+ }
+
+ public String toString()
+ {
+ return (new StringBuilder()).append(getClass().getName()).append(remoteSocketAddress.toString()).toString();
+ }
+
+ boolean closed;
+ LoggerContext context;
+ Logger logger;
+ ObjectInputStream ois;
+ SocketAddress remoteSocketAddress;
+ Socket socket;
+ SimpleSocketServer socketServer;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/SocketReceiver.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/SocketReceiver.java
new file mode 100644
index 0000000..271514f
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/SocketReceiver.java
@@ -0,0 +1,236 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.net;
+
+import ch.qos.logback.classic.Logger;
+import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.Context;
+import ch.qos.logback.core.net.DefaultSocketConnector;
+import ch.qos.logback.core.net.SocketConnector;
+import ch.qos.logback.core.util.CloseUtil;
+import java.io.*;
+import java.net.*;
+import java.util.concurrent.*;
+import javax.net.SocketFactory;
+
+// Referenced classes of package ch.qos.logback.classic.net:
+// ReceiverBase
+
+public class SocketReceiver extends ReceiverBase
+ implements Runnable, ch.qos.logback.core.net.SocketConnector.ExceptionHandler
+{
+
+ public SocketReceiver()
+ {
+ acceptConnectionTimeout = 5000;
+ }
+
+ private Future activateConnector(SocketConnector socketconnector)
+ {
+ Future future1 = getContext().getExecutorService().submit(socketconnector);
+ Future future = future1;
+_L2:
+ return future;
+ RejectedExecutionException rejectedexecutionexception;
+ rejectedexecutionexception;
+ future = null;
+ if(true) goto _L2; else goto _L1
+_L1:
+ }
+
+ private SocketConnector createConnector(InetAddress inetaddress, int i, int j, int k)
+ {
+ SocketConnector socketconnector = newConnector(inetaddress, i, j, k);
+ socketconnector.setExceptionHandler(this);
+ socketconnector.setSocketFactory(getSocketFactory());
+ return socketconnector;
+ }
+
+ private void dispatchEvents(LoggerContext loggercontext)
+ {
+ socket.setSoTimeout(acceptConnectionTimeout);
+ ObjectInputStream objectinputstream = new ObjectInputStream(socket.getInputStream());
+ socket.setSoTimeout(0);
+ addInfo((new StringBuilder()).append(receiverId).append("connection established").toString());
+ do
+ {
+ ILoggingEvent iloggingevent;
+ Logger logger;
+ do
+ {
+ iloggingevent = (ILoggingEvent)objectinputstream.readObject();
+ logger = loggercontext.getLogger(iloggingevent.getLoggerName());
+ } while(!logger.isEnabledFor(iloggingevent.getLevel()));
+ logger.callAppenders(iloggingevent);
+ } while(true);
+ EOFException eofexception;
+ eofexception;
+ addInfo((new StringBuilder()).append(receiverId).append("end-of-stream detected").toString());
+ CloseUtil.closeQuietly(socket);
+ socket = null;
+ addInfo((new StringBuilder()).append(receiverId).append("connection closed").toString());
+_L1:
+ return;
+ IOException ioexception;
+ ioexception;
+ addInfo((new StringBuilder()).append(receiverId).append("connection failed: ").append(ioexception).toString());
+ CloseUtil.closeQuietly(socket);
+ socket = null;
+ addInfo((new StringBuilder()).append(receiverId).append("connection closed").toString());
+ goto _L1
+ ClassNotFoundException classnotfoundexception;
+ classnotfoundexception;
+ addInfo((new StringBuilder()).append(receiverId).append("unknown event class: ").append(classnotfoundexception).toString());
+ CloseUtil.closeQuietly(socket);
+ socket = null;
+ addInfo((new StringBuilder()).append(receiverId).append("connection closed").toString());
+ goto _L1
+ Exception exception;
+ exception;
+ CloseUtil.closeQuietly(socket);
+ socket = null;
+ addInfo((new StringBuilder()).append(receiverId).append("connection closed").toString());
+ throw exception;
+ }
+
+ private Socket waitForConnectorToReturnASocket()
+ throws InterruptedException
+ {
+ Socket socket1;
+ try
+ {
+ socket1 = (Socket)connectorTask.get();
+ connectorTask = null;
+ }
+ catch(ExecutionException executionexception)
+ {
+ socket1 = null;
+ }
+ return socket1;
+ }
+
+ public void connectionFailed(SocketConnector socketconnector, Exception exception)
+ {
+ if(exception instanceof InterruptedException)
+ addInfo("connector interrupted");
+ else
+ if(exception instanceof ConnectException)
+ addInfo((new StringBuilder()).append(receiverId).append("connection refused").toString());
+ else
+ addInfo((new StringBuilder()).append(receiverId).append(exception).toString());
+ }
+
+ protected Runnable getRunnableTask()
+ {
+ return this;
+ }
+
+ protected SocketFactory getSocketFactory()
+ {
+ return SocketFactory.getDefault();
+ }
+
+ protected SocketConnector newConnector(InetAddress inetaddress, int i, int j, int k)
+ {
+ return new DefaultSocketConnector(inetaddress, i, j, k);
+ }
+
+ protected void onStop()
+ {
+ if(socket != null)
+ CloseUtil.closeQuietly(socket);
+ }
+
+ public void run()
+ {
+ LoggerContext loggercontext = (LoggerContext)getContext();
+_L5:
+ if(Thread.currentThread().isInterrupted()) goto _L2; else goto _L1
+_L1:
+ Future future;
+ connectorTask = activateConnector(createConnector(address, port, 0, reconnectionDelay));
+ future = connectorTask;
+ if(future != null) goto _L3; else goto _L2
+_L2:
+ addInfo("shutting down");
+ return;
+_L3:
+ socket = waitForConnectorToReturnASocket();
+ if(socket == null) goto _L2; else goto _L4
+_L4:
+ dispatchEvents(loggercontext);
+ goto _L5
+ InterruptedException interruptedexception;
+ interruptedexception;
+ goto _L2
+ }
+
+ public void setAcceptConnectionTimeout(int i)
+ {
+ acceptConnectionTimeout = i;
+ }
+
+ public void setPort(int i)
+ {
+ port = i;
+ }
+
+ public void setReconnectionDelay(int i)
+ {
+ reconnectionDelay = i;
+ }
+
+ public void setRemoteHost(String s)
+ {
+ remoteHost = s;
+ }
+
+ protected boolean shouldStart()
+ {
+ boolean flag = true;
+ int i;
+ if(port == 0)
+ {
+ addError("No port was configured for receiver. For more information, please visit http://logback.qos.ch/codes.html#receiver_no_port");
+ i = ((flag) ? 1 : 0);
+ } else
+ {
+ i = 0;
+ }
+ if(remoteHost == null)
+ {
+ i++;
+ addError("No host name or address was configured for receiver. For more information, please visit http://logback.qos.ch/codes.html#receiver_no_host");
+ }
+ if(reconnectionDelay == 0)
+ reconnectionDelay = 30000;
+ if(i == 0)
+ try
+ {
+ address = InetAddress.getByName(remoteHost);
+ }
+ catch(UnknownHostException unknownhostexception)
+ {
+ addError((new StringBuilder()).append("unknown host: ").append(remoteHost).toString());
+ i++;
+ }
+ if(i == 0)
+ receiverId = (new StringBuilder()).append("receiver ").append(remoteHost).append(":").append(port).append(": ").toString();
+ if(i != 0)
+ flag = false;
+ return flag;
+ }
+
+ private static final int DEFAULT_ACCEPT_CONNECTION_DELAY = 5000;
+ private int acceptConnectionTimeout;
+ private InetAddress address;
+ private Future connectorTask;
+ private int port;
+ private String receiverId;
+ private int reconnectionDelay;
+ private String remoteHost;
+ private volatile Socket socket;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/SyslogAppender.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/SyslogAppender.java
new file mode 100644
index 0000000..374e0a2
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/SyslogAppender.java
@@ -0,0 +1,150 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.net;
+
+import ch.qos.logback.classic.PatternLayout;
+import ch.qos.logback.classic.pattern.SyslogStartConverter;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.classic.spi.IThrowableProxy;
+import ch.qos.logback.classic.util.LevelToSyslogSeverity;
+import ch.qos.logback.core.Layout;
+import ch.qos.logback.core.net.SyslogAppenderBase;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Map;
+
+public class SyslogAppender extends SyslogAppenderBase
+{
+
+ public SyslogAppender()
+ {
+ stackTraceLayout = new PatternLayout();
+ stackTracePattern = "\t";
+ throwableExcluded = false;
+ }
+
+ private void handleThrowableFirstLine(OutputStream outputstream, IThrowableProxy ithrowableproxy, String s, boolean flag)
+ throws IOException
+ {
+ StringBuilder stringbuilder = (new StringBuilder()).append(s);
+ if(!flag)
+ stringbuilder.append("Caused by: ");
+ stringbuilder.append(ithrowableproxy.getClassName()).append(": ").append(ithrowableproxy.getMessage());
+ outputstream.write(stringbuilder.toString().getBytes());
+ outputstream.flush();
+ }
+
+ private void setupStackTraceLayout()
+ {
+ stackTraceLayout.getInstanceConverterMap().put("syslogStart", ch/qos/logback/classic/pattern/SyslogStartConverter.getName());
+ stackTraceLayout.setPattern((new StringBuilder()).append(getPrefixPattern()).append(stackTracePattern).toString());
+ stackTraceLayout.setContext(getContext());
+ stackTraceLayout.start();
+ }
+
+ public Layout buildLayout()
+ {
+ PatternLayout patternlayout = new PatternLayout();
+ patternlayout.getInstanceConverterMap().put("syslogStart", ch/qos/logback/classic/pattern/SyslogStartConverter.getName());
+ if(suffixPattern == null)
+ suffixPattern = "[%thread] %logger %msg";
+ patternlayout.setPattern((new StringBuilder()).append(getPrefixPattern()).append(suffixPattern).toString());
+ patternlayout.setContext(getContext());
+ patternlayout.start();
+ return patternlayout;
+ }
+
+ String getPrefixPattern()
+ {
+ return (new StringBuilder()).append("%syslogStart{").append(getFacility()).append("}%nopex{}").toString();
+ }
+
+ public int getSeverityForEvent(Object obj)
+ {
+ return LevelToSyslogSeverity.convert((ILoggingEvent)obj);
+ }
+
+ public String getStackTracePattern()
+ {
+ return stackTracePattern;
+ }
+
+ public boolean isThrowableExcluded()
+ {
+ return throwableExcluded;
+ }
+
+ protected void postProcess(Object obj, OutputStream outputstream)
+ {
+ if(!throwableExcluded) goto _L2; else goto _L1
+_L1:
+ return;
+_L2:
+ IThrowableProxy ithrowableproxy;
+ String s;
+ boolean flag;
+ ILoggingEvent iloggingevent = (ILoggingEvent)obj;
+ ithrowableproxy = iloggingevent.getThrowableProxy();
+ if(ithrowableproxy == null)
+ continue; /* Loop/switch isn't completed */
+ s = stackTraceLayout.doLayout(iloggingevent);
+ flag = true;
+_L5:
+ ch.qos.logback.classic.spi.StackTraceElementProxy astacktraceelementproxy[];
+ if(ithrowableproxy == null)
+ continue; /* Loop/switch isn't completed */
+ astacktraceelementproxy = ithrowableproxy.getStackTraceElementProxyArray();
+ int i;
+ int j;
+ handleThrowableFirstLine(outputstream, ithrowableproxy, s, flag);
+ i = astacktraceelementproxy.length;
+ j = 0;
+_L3:
+ if(j >= i)
+ break MISSING_BLOCK_LABEL_130;
+ ch.qos.logback.classic.spi.StackTraceElementProxy stacktraceelementproxy = astacktraceelementproxy[j];
+ StringBuilder stringbuilder = new StringBuilder();
+ stringbuilder.append(s).append(stacktraceelementproxy);
+ outputstream.write(stringbuilder.toString().getBytes());
+ outputstream.flush();
+ j++;
+ goto _L3
+ ithrowableproxy = ithrowableproxy.getCause();
+ flag = false;
+ if(true) goto _L5; else goto _L4
+_L4:
+ IOException ioexception;
+ ioexception;
+ if(true) goto _L1; else goto _L6
+_L6:
+ }
+
+ public void setStackTracePattern(String s)
+ {
+ stackTracePattern = s;
+ }
+
+ public void setThrowableExcluded(boolean flag)
+ {
+ throwableExcluded = flag;
+ }
+
+ boolean stackTraceHeaderLine(StringBuilder stringbuilder, boolean flag)
+ {
+ return false;
+ }
+
+ public void start()
+ {
+ super.start();
+ setupStackTraceLayout();
+ }
+
+ public static final String DEFAULT_STACKTRACE_PATTERN = "\t";
+ public static final String DEFAULT_SUFFIX_PATTERN = "[%thread] %logger %msg";
+ PatternLayout stackTraceLayout;
+ String stackTracePattern;
+ boolean throwableExcluded;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/server/RemoteAppenderClient.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/server/RemoteAppenderClient.java
new file mode 100644
index 0000000..27a5ceb
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/server/RemoteAppenderClient.java
@@ -0,0 +1,15 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.net.server;
+
+import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.core.net.server.Client;
+
+interface RemoteAppenderClient
+ extends Client
+{
+
+ public abstract void setLoggerContext(LoggerContext loggercontext);
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/server/RemoteAppenderServerListener.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/server/RemoteAppenderServerListener.java
new file mode 100644
index 0000000..3ecd671
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/server/RemoteAppenderServerListener.java
@@ -0,0 +1,35 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.net.server;
+
+import ch.qos.logback.core.net.server.Client;
+import ch.qos.logback.core.net.server.ServerSocketListener;
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.net.Socket;
+
+// Referenced classes of package ch.qos.logback.classic.net.server:
+// RemoteAppenderStreamClient, RemoteAppenderClient
+
+class RemoteAppenderServerListener extends ServerSocketListener
+{
+
+ public RemoteAppenderServerListener(ServerSocket serversocket)
+ {
+ super(serversocket);
+ }
+
+ protected RemoteAppenderClient createClient(String s, Socket socket)
+ throws IOException
+ {
+ return new RemoteAppenderStreamClient(s, socket);
+ }
+
+ protected volatile Client createClient(String s, Socket socket)
+ throws IOException
+ {
+ return createClient(s, socket);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/server/RemoteAppenderServerRunner.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/server/RemoteAppenderServerRunner.java
new file mode 100644
index 0000000..ac6eeb9
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/server/RemoteAppenderServerRunner.java
@@ -0,0 +1,32 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.net.server;
+
+import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.core.net.server.*;
+import java.util.concurrent.Executor;
+
+// Referenced classes of package ch.qos.logback.classic.net.server:
+// RemoteAppenderClient
+
+class RemoteAppenderServerRunner extends ConcurrentServerRunner
+{
+
+ public RemoteAppenderServerRunner(ServerListener serverlistener, Executor executor)
+ {
+ super(serverlistener, executor);
+ }
+
+ protected boolean configureClient(RemoteAppenderClient remoteappenderclient)
+ {
+ remoteappenderclient.setLoggerContext((LoggerContext)getContext());
+ return true;
+ }
+
+ protected volatile boolean configureClient(Client client)
+ {
+ return configureClient((RemoteAppenderClient)client);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/server/RemoteAppenderStreamClient.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/server/RemoteAppenderStreamClient.java
new file mode 100644
index 0000000..694c84f
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/server/RemoteAppenderStreamClient.java
@@ -0,0 +1,157 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.net.server;
+
+import ch.qos.logback.classic.Logger;
+import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.util.CloseUtil;
+import java.io.*;
+import java.net.Socket;
+
+// Referenced classes of package ch.qos.logback.classic.net.server:
+// RemoteAppenderClient
+
+class RemoteAppenderStreamClient
+ implements RemoteAppenderClient
+{
+
+ public RemoteAppenderStreamClient(String s, InputStream inputstream)
+ {
+ id = s;
+ socket = null;
+ inputStream = inputstream;
+ }
+
+ public RemoteAppenderStreamClient(String s, Socket socket1)
+ {
+ id = s;
+ socket = socket1;
+ inputStream = null;
+ }
+
+ private ObjectInputStream createObjectInputStream()
+ throws IOException
+ {
+ ObjectInputStream objectinputstream;
+ if(inputStream != null)
+ objectinputstream = new ObjectInputStream(inputStream);
+ else
+ objectinputstream = new ObjectInputStream(socket.getInputStream());
+ return objectinputstream;
+ }
+
+ public void close()
+ {
+ if(socket != null)
+ CloseUtil.closeQuietly(socket);
+ }
+
+ public void run()
+ {
+ Object obj;
+ logger.info((new StringBuilder()).append(this).append(": connected").toString());
+ obj = null;
+ ObjectInputStream objectinputstream1 = createObjectInputStream();
+ ObjectInputStream objectinputstream = objectinputstream1;
+ do
+ {
+ ILoggingEvent iloggingevent;
+ Logger logger1;
+ do
+ {
+ iloggingevent = (ILoggingEvent)objectinputstream.readObject();
+ logger1 = lc.getLogger(iloggingevent.getLoggerName());
+ } while(!logger1.isEnabledFor(iloggingevent.getLevel()));
+ logger1.callAppenders(iloggingevent);
+ } while(true);
+ EOFException eofexception1;
+ eofexception1;
+ obj = objectinputstream;
+_L8:
+ if(obj != null)
+ CloseUtil.closeQuietly(((java.io.Closeable) (obj)));
+ close();
+ logger.info((new StringBuilder()).append(this).append(": connection closed").toString());
+_L1:
+ return;
+ IOException ioexception;
+ ioexception;
+ IOException ioexception1;
+ objectinputstream = null;
+ ioexception1 = ioexception;
+_L6:
+ logger.info((new StringBuilder()).append(this).append(": ").append(ioexception1).toString());
+ if(objectinputstream != null)
+ CloseUtil.closeQuietly(objectinputstream);
+ close();
+ logger.info((new StringBuilder()).append(this).append(": connection closed").toString());
+ goto _L1
+ ClassNotFoundException classnotfoundexception;
+ classnotfoundexception;
+ objectinputstream = null;
+_L5:
+ logger.error((new StringBuilder()).append(this).append(": unknown event class").toString());
+ if(objectinputstream != null)
+ CloseUtil.closeQuietly(objectinputstream);
+ close();
+ logger.info((new StringBuilder()).append(this).append(": connection closed").toString());
+ goto _L1
+ RuntimeException runtimeexception;
+ runtimeexception;
+ RuntimeException runtimeexception1;
+ objectinputstream = null;
+ runtimeexception1 = runtimeexception;
+_L4:
+ logger.error((new StringBuilder()).append(this).append(": ").append(runtimeexception1).toString());
+ if(objectinputstream != null)
+ CloseUtil.closeQuietly(objectinputstream);
+ close();
+ logger.info((new StringBuilder()).append(this).append(": connection closed").toString());
+ goto _L1
+ Exception exception;
+ exception;
+ Exception exception1;
+ objectinputstream = null;
+ exception1 = exception;
+_L3:
+ if(objectinputstream != null)
+ CloseUtil.closeQuietly(objectinputstream);
+ close();
+ logger.info((new StringBuilder()).append(this).append(": connection closed").toString());
+ throw exception1;
+ exception1;
+ if(true) goto _L3; else goto _L2
+_L2:
+ runtimeexception1;
+ goto _L4
+ ClassNotFoundException classnotfoundexception1;
+ classnotfoundexception1;
+ goto _L5
+ ioexception1;
+ goto _L6
+ EOFException eofexception;
+ eofexception;
+ if(true) goto _L8; else goto _L7
+_L7:
+ }
+
+ public void setLoggerContext(LoggerContext loggercontext)
+ {
+ lc = loggercontext;
+ logger = loggercontext.getLogger(getClass().getPackage().getName());
+ }
+
+ public String toString()
+ {
+ return (new StringBuilder()).append("client ").append(id).toString();
+ }
+
+ private final String id;
+ private final InputStream inputStream;
+ private LoggerContext lc;
+ private Logger logger;
+ private final Socket socket;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/server/SSLServerSocketAppender.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/server/SSLServerSocketAppender.java
new file mode 100644
index 0000000..6b31253
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/server/SSLServerSocketAppender.java
@@ -0,0 +1,48 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.net.server;
+
+import ch.qos.logback.classic.net.LoggingEventPreSerializationTransformer;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.net.server.SSLServerSocketAppenderBase;
+import ch.qos.logback.core.spi.PreSerializationTransformer;
+
+public class SSLServerSocketAppender extends SSLServerSocketAppenderBase
+{
+
+ public SSLServerSocketAppender()
+ {
+ }
+
+ protected PreSerializationTransformer getPST()
+ {
+ return pst;
+ }
+
+ public boolean isIncludeCallerData()
+ {
+ return includeCallerData;
+ }
+
+ protected void postProcessEvent(ILoggingEvent iloggingevent)
+ {
+ if(isIncludeCallerData())
+ iloggingevent.getCallerData();
+ }
+
+ protected volatile void postProcessEvent(Object obj)
+ {
+ postProcessEvent((ILoggingEvent)obj);
+ }
+
+ public void setIncludeCallerData(boolean flag)
+ {
+ includeCallerData = flag;
+ }
+
+ private static final PreSerializationTransformer pst = new LoggingEventPreSerializationTransformer();
+ private boolean includeCallerData;
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/server/SSLServerSocketReceiver.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/server/SSLServerSocketReceiver.java
new file mode 100644
index 0000000..b96641b
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/server/SSLServerSocketReceiver.java
@@ -0,0 +1,49 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.net.server;
+
+import ch.qos.logback.core.net.ssl.*;
+import javax.net.ServerSocketFactory;
+import javax.net.ssl.SSLContext;
+
+// Referenced classes of package ch.qos.logback.classic.net.server:
+// ServerSocketReceiver
+
+public class SSLServerSocketReceiver extends ServerSocketReceiver
+ implements SSLComponent
+{
+
+ public SSLServerSocketReceiver()
+ {
+ }
+
+ protected ServerSocketFactory getServerSocketFactory()
+ throws Exception
+ {
+ if(socketFactory == null)
+ {
+ SSLContext sslcontext = getSsl().createContext(this);
+ SSLParametersConfiguration sslparametersconfiguration = getSsl().getParameters();
+ sslparametersconfiguration.setContext(getContext());
+ socketFactory = new ConfigurableSSLServerSocketFactory(sslparametersconfiguration, sslcontext.getServerSocketFactory());
+ }
+ return socketFactory;
+ }
+
+ public SSLConfiguration getSsl()
+ {
+ if(ssl == null)
+ ssl = new SSLConfiguration();
+ return ssl;
+ }
+
+ public void setSsl(SSLConfiguration sslconfiguration)
+ {
+ ssl = sslconfiguration;
+ }
+
+ private ServerSocketFactory socketFactory;
+ private SSLConfiguration ssl;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/server/ServerSocketAppender.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/server/ServerSocketAppender.java
new file mode 100644
index 0000000..0a04d49
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/server/ServerSocketAppender.java
@@ -0,0 +1,48 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.net.server;
+
+import ch.qos.logback.classic.net.LoggingEventPreSerializationTransformer;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.net.server.AbstractServerSocketAppender;
+import ch.qos.logback.core.spi.PreSerializationTransformer;
+
+public class ServerSocketAppender extends AbstractServerSocketAppender
+{
+
+ public ServerSocketAppender()
+ {
+ }
+
+ protected PreSerializationTransformer getPST()
+ {
+ return pst;
+ }
+
+ public boolean isIncludeCallerData()
+ {
+ return includeCallerData;
+ }
+
+ protected void postProcessEvent(ILoggingEvent iloggingevent)
+ {
+ if(isIncludeCallerData())
+ iloggingevent.getCallerData();
+ }
+
+ protected volatile void postProcessEvent(Object obj)
+ {
+ postProcessEvent((ILoggingEvent)obj);
+ }
+
+ public void setIncludeCallerData(boolean flag)
+ {
+ includeCallerData = flag;
+ }
+
+ private static final PreSerializationTransformer pst = new LoggingEventPreSerializationTransformer();
+ private boolean includeCallerData;
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/server/ServerSocketReceiver.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/server/ServerSocketReceiver.java
new file mode 100644
index 0000000..6cfc53f
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/net/server/ServerSocketReceiver.java
@@ -0,0 +1,126 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.net.server;
+
+import ch.qos.logback.classic.net.ReceiverBase;
+import ch.qos.logback.core.Context;
+import ch.qos.logback.core.net.server.ServerListener;
+import ch.qos.logback.core.net.server.ServerRunner;
+import ch.qos.logback.core.util.CloseUtil;
+import java.io.IOException;
+import java.net.*;
+import java.util.concurrent.Executor;
+import javax.net.ServerSocketFactory;
+
+// Referenced classes of package ch.qos.logback.classic.net.server:
+// RemoteAppenderServerListener, RemoteAppenderServerRunner
+
+public class ServerSocketReceiver extends ReceiverBase
+{
+
+ public ServerSocketReceiver()
+ {
+ port = 4560;
+ backlog = 50;
+ }
+
+ protected ServerListener createServerListener(ServerSocket serversocket)
+ {
+ return new RemoteAppenderServerListener(serversocket);
+ }
+
+ protected ServerRunner createServerRunner(ServerListener serverlistener, Executor executor)
+ {
+ return new RemoteAppenderServerRunner(serverlistener, executor);
+ }
+
+ public String getAddress()
+ {
+ return address;
+ }
+
+ public int getBacklog()
+ {
+ return backlog;
+ }
+
+ protected InetAddress getInetAddress()
+ throws UnknownHostException
+ {
+ InetAddress inetaddress;
+ if(getAddress() == null)
+ inetaddress = null;
+ else
+ inetaddress = InetAddress.getByName(getAddress());
+ return inetaddress;
+ }
+
+ public int getPort()
+ {
+ return port;
+ }
+
+ protected Runnable getRunnableTask()
+ {
+ return runner;
+ }
+
+ protected ServerSocketFactory getServerSocketFactory()
+ throws Exception
+ {
+ return ServerSocketFactory.getDefault();
+ }
+
+ protected void onStop()
+ {
+ try
+ {
+ if(runner != null)
+ runner.stop();
+ }
+ catch(IOException ioexception)
+ {
+ addError((new StringBuilder()).append("server shutdown error: ").append(ioexception).toString(), ioexception);
+ }
+ }
+
+ public void setAddress(String s)
+ {
+ address = s;
+ }
+
+ public void setBacklog(int i)
+ {
+ backlog = i;
+ }
+
+ public void setPort(int i)
+ {
+ port = i;
+ }
+
+ protected boolean shouldStart()
+ {
+ runner = createServerRunner(createServerListener(getServerSocketFactory().createServerSocket(getPort(), getBacklog(), getInetAddress())), getContext().getExecutorService());
+ runner.setContext(getContext());
+ boolean flag = true;
+_L2:
+ return flag;
+ Exception exception;
+ exception;
+ addError((new StringBuilder()).append("server startup error: ").append(exception).toString(), exception);
+ CloseUtil.closeQuietly(serverSocket);
+ flag = false;
+ if(true) goto _L2; else goto _L1
+_L1:
+ }
+
+ public static final int DEFAULT_BACKLOG = 50;
+ private String address;
+ private int backlog;
+ private int port;
+ private ServerRunner runner;
+ private ServerSocket serverSocket;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/Abbreviator.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/Abbreviator.java
new file mode 100644
index 0000000..f3933a6
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/Abbreviator.java
@@ -0,0 +1,12 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.pattern;
+
+
+public interface Abbreviator
+{
+
+ public abstract String abbreviate(String s);
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/CallerDataConverter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/CallerDataConverter.java
new file mode 100644
index 0000000..67d5ee5
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/CallerDataConverter.java
@@ -0,0 +1,156 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.pattern;
+
+import ch.qos.logback.classic.spi.CallerData;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.Context;
+import ch.qos.logback.core.CoreConstants;
+import ch.qos.logback.core.boolex.EvaluationException;
+import ch.qos.logback.core.boolex.EventEvaluator;
+import ch.qos.logback.core.status.ErrorStatus;
+import java.util.*;
+
+// Referenced classes of package ch.qos.logback.classic.pattern:
+// ClassicConverter
+
+public class CallerDataConverter extends ClassicConverter
+{
+
+ public CallerDataConverter()
+ {
+ depth = 5;
+ evaluatorList = null;
+ errorCount = 0;
+ }
+
+ private void addEvaluator(EventEvaluator eventevaluator)
+ {
+ if(evaluatorList == null)
+ evaluatorList = new ArrayList();
+ evaluatorList.add(eventevaluator);
+ }
+
+ public String convert(ILoggingEvent iloggingevent)
+ {
+ int i;
+ StringBuilder stringbuilder;
+ i = 0;
+ stringbuilder = new StringBuilder();
+ if(evaluatorList == null) goto _L2; else goto _L1
+_L1:
+ int k = 0;
+_L6:
+ EventEvaluator eventevaluator;
+ if(k >= evaluatorList.size())
+ break MISSING_BLOCK_LABEL_327;
+ eventevaluator = (EventEvaluator)evaluatorList.get(k);
+ boolean flag1 = eventevaluator.evaluate(iloggingevent);
+ if(!flag1) goto _L4; else goto _L3
+_L3:
+ boolean flag = true;
+_L8:
+ if(flag) goto _L2; else goto _L5
+_L5:
+ String s = "";
+_L7:
+ return s;
+ EvaluationException evaluationexception;
+ evaluationexception;
+ errorCount = 1 + errorCount;
+ if(errorCount < 4)
+ addError((new StringBuilder()).append("Exception thrown for evaluator named [").append(eventevaluator.getName()).append("]").toString(), evaluationexception);
+ else
+ if(errorCount == 4)
+ {
+ ErrorStatus errorstatus = new ErrorStatus((new StringBuilder()).append("Exception thrown for evaluator named [").append(eventevaluator.getName()).append("].").toString(), this, evaluationexception);
+ errorstatus.add(new ErrorStatus("This was the last warning about this evaluator's errors.We don't want the StatusManager to get flooded.", this));
+ addStatus(errorstatus);
+ }
+_L4:
+ k++;
+ goto _L6
+_L2:
+ StackTraceElement astacktraceelement[] = iloggingevent.getCallerData();
+ if(astacktraceelement != null && astacktraceelement.length > 0)
+ {
+ int j;
+ if(depth < astacktraceelement.length)
+ j = depth;
+ else
+ j = astacktraceelement.length;
+ for(; i < j; i++)
+ {
+ stringbuilder.append(getCallerLinePrefix());
+ stringbuilder.append(i);
+ stringbuilder.append("\t at ");
+ stringbuilder.append(astacktraceelement[i]);
+ stringbuilder.append(CoreConstants.LINE_SEPARATOR);
+ }
+
+ s = stringbuilder.toString();
+ } else
+ {
+ s = CallerData.CALLER_DATA_NA;
+ }
+ goto _L7
+ flag = false;
+ goto _L8
+ }
+
+ public volatile String convert(Object obj)
+ {
+ return convert((ILoggingEvent)obj);
+ }
+
+ protected String getCallerLinePrefix()
+ {
+ return "Caller+";
+ }
+
+ public void start()
+ {
+ String s = getFirstOption();
+ if(s != null) goto _L2; else goto _L1
+_L1:
+ return;
+_L2:
+ List list;
+ try
+ {
+ depth = Integer.parseInt(s);
+ }
+ catch(NumberFormatException numberformatexception)
+ {
+ addError((new StringBuilder()).append("Failed to parse depth option [").append(s).append("]").toString(), numberformatexception);
+ }
+ list = getOptionList();
+ if(list != null && list.size() > 1)
+ {
+ int i = list.size();
+ int j = 1;
+ while(j < i)
+ {
+ String s1 = (String)list.get(j);
+ Context context = getContext();
+ if(context != null)
+ {
+ EventEvaluator eventevaluator = (EventEvaluator)((Map)context.getObject("EVALUATOR_MAP")).get(s1);
+ if(eventevaluator != null)
+ addEvaluator(eventevaluator);
+ }
+ j++;
+ }
+ }
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ public static final String DEFAULT_CALLER_LINE_PREFIX = "Caller+";
+ final int MAX_ERROR_COUNT = 4;
+ int depth;
+ int errorCount;
+ List evaluatorList;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/ClassNameOnlyAbbreviator.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/ClassNameOnlyAbbreviator.java
new file mode 100644
index 0000000..d47c6d4
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/ClassNameOnlyAbbreviator.java
@@ -0,0 +1,26 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.pattern;
+
+
+// Referenced classes of package ch.qos.logback.classic.pattern:
+// Abbreviator
+
+public class ClassNameOnlyAbbreviator
+ implements Abbreviator
+{
+
+ public ClassNameOnlyAbbreviator()
+ {
+ }
+
+ public String abbreviate(String s)
+ {
+ int i = s.lastIndexOf('.');
+ if(i != -1)
+ s = s.substring(i + 1, s.length());
+ return s;
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/ClassOfCallerConverter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/ClassOfCallerConverter.java
new file mode 100644
index 0000000..4167f55
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/ClassOfCallerConverter.java
@@ -0,0 +1,29 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.pattern;
+
+import ch.qos.logback.classic.spi.ILoggingEvent;
+
+// Referenced classes of package ch.qos.logback.classic.pattern:
+// NamedConverter
+
+public class ClassOfCallerConverter extends NamedConverter
+{
+
+ public ClassOfCallerConverter()
+ {
+ }
+
+ protected String getFullyQualifiedName(ILoggingEvent iloggingevent)
+ {
+ StackTraceElement astacktraceelement[] = iloggingevent.getCallerData();
+ String s;
+ if(astacktraceelement != null && astacktraceelement.length > 0)
+ s = astacktraceelement[0].getClassName();
+ else
+ s = "?";
+ return s;
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/ClassicConverter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/ClassicConverter.java
new file mode 100644
index 0000000..ce2923b
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/ClassicConverter.java
@@ -0,0 +1,15 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.pattern;
+
+import ch.qos.logback.core.pattern.DynamicConverter;
+
+public abstract class ClassicConverter extends DynamicConverter
+{
+
+ public ClassicConverter()
+ {
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/ContextNameConverter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/ContextNameConverter.java
new file mode 100644
index 0000000..85bf1ae
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/ContextNameConverter.java
@@ -0,0 +1,29 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.pattern;
+
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.classic.spi.LoggerContextVO;
+
+// Referenced classes of package ch.qos.logback.classic.pattern:
+// ClassicConverter
+
+public class ContextNameConverter extends ClassicConverter
+{
+
+ public ContextNameConverter()
+ {
+ }
+
+ public String convert(ILoggingEvent iloggingevent)
+ {
+ return iloggingevent.getLoggerContextVO().getName();
+ }
+
+ public volatile String convert(Object obj)
+ {
+ return convert((ILoggingEvent)obj);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/DateConverter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/DateConverter.java
new file mode 100644
index 0000000..171df14
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/DateConverter.java
@@ -0,0 +1,67 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.pattern;
+
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.util.CachingDateFormatter;
+import java.util.List;
+import java.util.TimeZone;
+
+// Referenced classes of package ch.qos.logback.classic.pattern:
+// ClassicConverter
+
+public class DateConverter extends ClassicConverter
+{
+
+ public DateConverter()
+ {
+ lastTimestamp = -1L;
+ timestampStrCache = null;
+ cachingDateFormatter = null;
+ }
+
+ public String convert(ILoggingEvent iloggingevent)
+ {
+ long l = iloggingevent.getTimeStamp();
+ return cachingDateFormatter.format(l);
+ }
+
+ public volatile String convert(Object obj)
+ {
+ return convert((ILoggingEvent)obj);
+ }
+
+ public void start()
+ {
+ String s = getFirstOption();
+ if(s == null)
+ s = "yyyy-MM-dd HH:mm:ss,SSS";
+ String s1;
+ List list;
+ if(s.equals("ISO8601"))
+ s1 = "yyyy-MM-dd HH:mm:ss,SSS";
+ else
+ s1 = s;
+ try
+ {
+ cachingDateFormatter = new CachingDateFormatter(s1);
+ }
+ catch(IllegalArgumentException illegalargumentexception)
+ {
+ addWarn((new StringBuilder()).append("Could not instantiate SimpleDateFormat with pattern ").append(s1).toString(), illegalargumentexception);
+ cachingDateFormatter = new CachingDateFormatter("yyyy-MM-dd HH:mm:ss,SSS");
+ }
+ list = getOptionList();
+ if(list != null && list.size() > 1)
+ {
+ TimeZone timezone = TimeZone.getTimeZone((String)list.get(1));
+ cachingDateFormatter.setTimeZone(timezone);
+ }
+ }
+
+ CachingDateFormatter cachingDateFormatter;
+ long lastTimestamp;
+ String timestampStrCache;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/EnsureExceptionHandling.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/EnsureExceptionHandling.java
new file mode 100644
index 0000000..14ac3e4
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/EnsureExceptionHandling.java
@@ -0,0 +1,44 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.pattern;
+
+import ch.qos.logback.core.pattern.*;
+
+// Referenced classes of package ch.qos.logback.classic.pattern:
+// ThrowableHandlingConverter, ExtendedThrowableProxyConverter
+
+public class EnsureExceptionHandling
+ implements PostCompileProcessor
+{
+
+ public EnsureExceptionHandling()
+ {
+ }
+
+ public boolean chainHandlesThrowable(Converter converter)
+ {
+_L3:
+ if(converter == null)
+ break MISSING_BLOCK_LABEL_23;
+ if(!(converter instanceof ThrowableHandlingConverter)) goto _L2; else goto _L1
+_L1:
+ boolean flag = true;
+_L4:
+ return flag;
+_L2:
+ converter = converter.getNext();
+ goto _L3
+ flag = false;
+ goto _L4
+ }
+
+ public void process(Converter converter)
+ {
+ if(converter == null)
+ throw new IllegalArgumentException("cannot process empty chain");
+ if(!chainHandlesThrowable(converter))
+ ConverterUtil.findTail(converter).setNext(new ExtendedThrowableProxyConverter());
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/ExtendedThrowableProxyConverter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/ExtendedThrowableProxyConverter.java
new file mode 100644
index 0000000..c8f4a10
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/ExtendedThrowableProxyConverter.java
@@ -0,0 +1,27 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.pattern;
+
+import ch.qos.logback.classic.spi.*;
+
+// Referenced classes of package ch.qos.logback.classic.pattern:
+// ThrowableProxyConverter
+
+public class ExtendedThrowableProxyConverter extends ThrowableProxyConverter
+{
+
+ public ExtendedThrowableProxyConverter()
+ {
+ }
+
+ protected void extraData(StringBuilder stringbuilder, StackTraceElementProxy stacktraceelementproxy)
+ {
+ ThrowableProxyUtil.subjoinPackagingData(stringbuilder, stacktraceelementproxy);
+ }
+
+ protected void prepareLoggingEvent(ILoggingEvent iloggingevent)
+ {
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/FileOfCallerConverter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/FileOfCallerConverter.java
new file mode 100644
index 0000000..1c585ac
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/FileOfCallerConverter.java
@@ -0,0 +1,34 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.pattern;
+
+import ch.qos.logback.classic.spi.ILoggingEvent;
+
+// Referenced classes of package ch.qos.logback.classic.pattern:
+// ClassicConverter
+
+public class FileOfCallerConverter extends ClassicConverter
+{
+
+ public FileOfCallerConverter()
+ {
+ }
+
+ public String convert(ILoggingEvent iloggingevent)
+ {
+ StackTraceElement astacktraceelement[] = iloggingevent.getCallerData();
+ String s;
+ if(astacktraceelement != null && astacktraceelement.length > 0)
+ s = astacktraceelement[0].getFileName();
+ else
+ s = "?";
+ return s;
+ }
+
+ public volatile String convert(Object obj)
+ {
+ return convert((ILoggingEvent)obj);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/LevelConverter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/LevelConverter.java
new file mode 100644
index 0000000..d9184fc
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/LevelConverter.java
@@ -0,0 +1,29 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.pattern;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+
+// Referenced classes of package ch.qos.logback.classic.pattern:
+// ClassicConverter
+
+public class LevelConverter extends ClassicConverter
+{
+
+ public LevelConverter()
+ {
+ }
+
+ public String convert(ILoggingEvent iloggingevent)
+ {
+ return iloggingevent.getLevel().toString();
+ }
+
+ public volatile String convert(Object obj)
+ {
+ return convert((ILoggingEvent)obj);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/LineOfCallerConverter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/LineOfCallerConverter.java
new file mode 100644
index 0000000..ca2847e
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/LineOfCallerConverter.java
@@ -0,0 +1,34 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.pattern;
+
+import ch.qos.logback.classic.spi.ILoggingEvent;
+
+// Referenced classes of package ch.qos.logback.classic.pattern:
+// ClassicConverter
+
+public class LineOfCallerConverter extends ClassicConverter
+{
+
+ public LineOfCallerConverter()
+ {
+ }
+
+ public String convert(ILoggingEvent iloggingevent)
+ {
+ StackTraceElement astacktraceelement[] = iloggingevent.getCallerData();
+ String s;
+ if(astacktraceelement != null && astacktraceelement.length > 0)
+ s = Integer.toString(astacktraceelement[0].getLineNumber());
+ else
+ s = "?";
+ return s;
+ }
+
+ public volatile String convert(Object obj)
+ {
+ return convert((ILoggingEvent)obj);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/LineSeparatorConverter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/LineSeparatorConverter.java
new file mode 100644
index 0000000..e7a255e
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/LineSeparatorConverter.java
@@ -0,0 +1,29 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.pattern;
+
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.CoreConstants;
+
+// Referenced classes of package ch.qos.logback.classic.pattern:
+// ClassicConverter
+
+public class LineSeparatorConverter extends ClassicConverter
+{
+
+ public LineSeparatorConverter()
+ {
+ }
+
+ public String convert(ILoggingEvent iloggingevent)
+ {
+ return CoreConstants.LINE_SEPARATOR;
+ }
+
+ public volatile String convert(Object obj)
+ {
+ return convert((ILoggingEvent)obj);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/LocalSequenceNumberConverter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/LocalSequenceNumberConverter.java
new file mode 100644
index 0000000..404a20d
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/LocalSequenceNumberConverter.java
@@ -0,0 +1,32 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.pattern;
+
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import java.util.concurrent.atomic.AtomicLong;
+
+// Referenced classes of package ch.qos.logback.classic.pattern:
+// ClassicConverter
+
+public class LocalSequenceNumberConverter extends ClassicConverter
+{
+
+ public LocalSequenceNumberConverter()
+ {
+ sequenceNumber = new AtomicLong(System.currentTimeMillis());
+ }
+
+ public String convert(ILoggingEvent iloggingevent)
+ {
+ return Long.toString(sequenceNumber.getAndIncrement());
+ }
+
+ public volatile String convert(Object obj)
+ {
+ return convert((ILoggingEvent)obj);
+ }
+
+ AtomicLong sequenceNumber;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/LoggerConverter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/LoggerConverter.java
new file mode 100644
index 0000000..7d4eb40
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/LoggerConverter.java
@@ -0,0 +1,23 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.pattern;
+
+import ch.qos.logback.classic.spi.ILoggingEvent;
+
+// Referenced classes of package ch.qos.logback.classic.pattern:
+// NamedConverter
+
+public class LoggerConverter extends NamedConverter
+{
+
+ public LoggerConverter()
+ {
+ }
+
+ protected String getFullyQualifiedName(ILoggingEvent iloggingevent)
+ {
+ return iloggingevent.getLoggerName();
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/MDCConverter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/MDCConverter.java
new file mode 100644
index 0000000..0f5d2f4
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/MDCConverter.java
@@ -0,0 +1,89 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.pattern;
+
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.util.OptionHelper;
+import java.util.*;
+
+// Referenced classes of package ch.qos.logback.classic.pattern:
+// ClassicConverter
+
+public class MDCConverter extends ClassicConverter
+{
+
+ public MDCConverter()
+ {
+ defaultValue = "";
+ }
+
+ private String outputMDCForAllKeys(Map map)
+ {
+ StringBuilder stringbuilder = new StringBuilder();
+ Iterator iterator = map.entrySet().iterator();
+ boolean flag = true;
+ while(iterator.hasNext())
+ {
+ java.util.Map.Entry entry = (java.util.Map.Entry)iterator.next();
+ boolean flag1;
+ if(flag)
+ {
+ flag1 = false;
+ } else
+ {
+ stringbuilder.append(", ");
+ flag1 = flag;
+ }
+ stringbuilder.append((String)entry.getKey()).append('=').append((String)entry.getValue());
+ flag = flag1;
+ }
+ return stringbuilder.toString();
+ }
+
+ public String convert(ILoggingEvent iloggingevent)
+ {
+ Map map = iloggingevent.getMDCPropertyMap();
+ if(map != null) goto _L2; else goto _L1
+_L1:
+ String s = defaultValue;
+_L4:
+ return s;
+_L2:
+ if(key == null)
+ {
+ s = outputMDCForAllKeys(map);
+ } else
+ {
+ s = (String)iloggingevent.getMDCPropertyMap().get(key);
+ if(s == null)
+ s = defaultValue;
+ }
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ public volatile String convert(Object obj)
+ {
+ return convert((ILoggingEvent)obj);
+ }
+
+ public void start()
+ {
+ String as[] = OptionHelper.extractDefaultReplacement(getFirstOption());
+ key = as[0];
+ if(as[1] != null)
+ defaultValue = as[1];
+ super.start();
+ }
+
+ public void stop()
+ {
+ key = null;
+ super.stop();
+ }
+
+ private String defaultValue;
+ private String key;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/MarkerConverter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/MarkerConverter.java
new file mode 100644
index 0000000..1c5df54
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/MarkerConverter.java
@@ -0,0 +1,37 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.pattern;
+
+import ch.qos.logback.classic.spi.ILoggingEvent;
+
+// Referenced classes of package ch.qos.logback.classic.pattern:
+// ClassicConverter
+
+public class MarkerConverter extends ClassicConverter
+{
+
+ public MarkerConverter()
+ {
+ }
+
+ public String convert(ILoggingEvent iloggingevent)
+ {
+ org.slf4j.Marker marker = iloggingevent.getMarker();
+ String s;
+ if(marker == null)
+ s = EMPTY;
+ else
+ s = marker.toString();
+ return s;
+ }
+
+ public volatile String convert(Object obj)
+ {
+ return convert((ILoggingEvent)obj);
+ }
+
+ private static String EMPTY = "";
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/MessageConverter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/MessageConverter.java
new file mode 100644
index 0000000..204a023
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/MessageConverter.java
@@ -0,0 +1,28 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.pattern;
+
+import ch.qos.logback.classic.spi.ILoggingEvent;
+
+// Referenced classes of package ch.qos.logback.classic.pattern:
+// ClassicConverter
+
+public class MessageConverter extends ClassicConverter
+{
+
+ public MessageConverter()
+ {
+ }
+
+ public String convert(ILoggingEvent iloggingevent)
+ {
+ return iloggingevent.getFormattedMessage();
+ }
+
+ public volatile String convert(Object obj)
+ {
+ return convert((ILoggingEvent)obj);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/MethodOfCallerConverter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/MethodOfCallerConverter.java
new file mode 100644
index 0000000..6bcc252
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/MethodOfCallerConverter.java
@@ -0,0 +1,34 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.pattern;
+
+import ch.qos.logback.classic.spi.ILoggingEvent;
+
+// Referenced classes of package ch.qos.logback.classic.pattern:
+// ClassicConverter
+
+public class MethodOfCallerConverter extends ClassicConverter
+{
+
+ public MethodOfCallerConverter()
+ {
+ }
+
+ public String convert(ILoggingEvent iloggingevent)
+ {
+ StackTraceElement astacktraceelement[] = iloggingevent.getCallerData();
+ String s;
+ if(astacktraceelement != null && astacktraceelement.length > 0)
+ s = astacktraceelement[0].getMethodName();
+ else
+ s = "?";
+ return s;
+ }
+
+ public volatile String convert(Object obj)
+ {
+ return convert((ILoggingEvent)obj);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/NamedConverter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/NamedConverter.java
new file mode 100644
index 0000000..a463dcc
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/NamedConverter.java
@@ -0,0 +1,52 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.pattern;
+
+import ch.qos.logback.classic.spi.ILoggingEvent;
+
+// Referenced classes of package ch.qos.logback.classic.pattern:
+// ClassicConverter, Abbreviator, ClassNameOnlyAbbreviator, TargetLengthBasedClassNameAbbreviator
+
+public abstract class NamedConverter extends ClassicConverter
+{
+
+ public NamedConverter()
+ {
+ abbreviator = null;
+ }
+
+ public String convert(ILoggingEvent iloggingevent)
+ {
+ String s = getFullyQualifiedName(iloggingevent);
+ if(abbreviator != null)
+ s = abbreviator.abbreviate(s);
+ return s;
+ }
+
+ public volatile String convert(Object obj)
+ {
+ return convert((ILoggingEvent)obj);
+ }
+
+ protected abstract String getFullyQualifiedName(ILoggingEvent iloggingevent);
+
+ public void start()
+ {
+ String s = getFirstOption();
+ if(s != null)
+ try
+ {
+ int i = Integer.parseInt(s);
+ if(i == 0)
+ abbreviator = new ClassNameOnlyAbbreviator();
+ else
+ if(i > 0)
+ abbreviator = new TargetLengthBasedClassNameAbbreviator(i);
+ }
+ catch(NumberFormatException numberformatexception) { }
+ }
+
+ Abbreviator abbreviator;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/NopThrowableInformationConverter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/NopThrowableInformationConverter.java
new file mode 100644
index 0000000..88b9f99
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/NopThrowableInformationConverter.java
@@ -0,0 +1,28 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.pattern;
+
+import ch.qos.logback.classic.spi.ILoggingEvent;
+
+// Referenced classes of package ch.qos.logback.classic.pattern:
+// ThrowableHandlingConverter
+
+public class NopThrowableInformationConverter extends ThrowableHandlingConverter
+{
+
+ public NopThrowableInformationConverter()
+ {
+ }
+
+ public String convert(ILoggingEvent iloggingevent)
+ {
+ return "";
+ }
+
+ public volatile String convert(Object obj)
+ {
+ return convert((ILoggingEvent)obj);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/PropertyConverter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/PropertyConverter.java
new file mode 100644
index 0000000..74c70bb
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/PropertyConverter.java
@@ -0,0 +1,52 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.pattern;
+
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.classic.spi.LoggerContextVO;
+import java.util.Map;
+
+// Referenced classes of package ch.qos.logback.classic.pattern:
+// ClassicConverter
+
+public final class PropertyConverter extends ClassicConverter
+{
+
+ public PropertyConverter()
+ {
+ }
+
+ public String convert(ILoggingEvent iloggingevent)
+ {
+ if(key != null) goto _L2; else goto _L1
+_L1:
+ String s = "Property_HAS_NO_KEY";
+_L4:
+ return s;
+_L2:
+ s = (String)iloggingevent.getLoggerContextVO().getPropertyMap().get(key);
+ if(s == null)
+ s = System.getProperty(key);
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ public volatile String convert(Object obj)
+ {
+ return convert((ILoggingEvent)obj);
+ }
+
+ public void start()
+ {
+ String s = getFirstOption();
+ if(s != null)
+ {
+ key = s;
+ super.start();
+ }
+ }
+
+ String key;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/RelativeTimeConverter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/RelativeTimeConverter.java
new file mode 100644
index 0000000..e442198
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/RelativeTimeConverter.java
@@ -0,0 +1,43 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.pattern;
+
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.classic.spi.LoggerContextVO;
+
+// Referenced classes of package ch.qos.logback.classic.pattern:
+// ClassicConverter
+
+public class RelativeTimeConverter extends ClassicConverter
+{
+
+ public RelativeTimeConverter()
+ {
+ lastTimestamp = -1L;
+ timesmapCache = null;
+ }
+
+ public String convert(ILoggingEvent iloggingevent)
+ {
+ long l = iloggingevent.getTimeStamp();
+ this;
+ JVM INSTR monitorenter ;
+ if(l != lastTimestamp)
+ {
+ lastTimestamp = l;
+ timesmapCache = Long.toString(l - iloggingevent.getLoggerContextVO().getBirthTime());
+ }
+ String s = timesmapCache;
+ return s;
+ }
+
+ public volatile String convert(Object obj)
+ {
+ return convert((ILoggingEvent)obj);
+ }
+
+ long lastTimestamp;
+ String timesmapCache;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/RootCauseFirstThrowableProxyConverter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/RootCauseFirstThrowableProxyConverter.java
new file mode 100644
index 0000000..64a1ce7
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/RootCauseFirstThrowableProxyConverter.java
@@ -0,0 +1,53 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.pattern;
+
+import ch.qos.logback.classic.spi.IThrowableProxy;
+import ch.qos.logback.classic.spi.ThrowableProxyUtil;
+import ch.qos.logback.core.CoreConstants;
+
+// Referenced classes of package ch.qos.logback.classic.pattern:
+// ExtendedThrowableProxyConverter
+
+public class RootCauseFirstThrowableProxyConverter extends ExtendedThrowableProxyConverter
+{
+
+ public RootCauseFirstThrowableProxyConverter()
+ {
+ }
+
+ protected void recursiveAppendRootCauseFirst(StringBuilder stringbuilder, String s, int i, IThrowableProxy ithrowableproxy)
+ {
+ if(ithrowableproxy.getCause() != null)
+ {
+ recursiveAppendRootCauseFirst(stringbuilder, s, i, ithrowableproxy.getCause());
+ s = null;
+ }
+ ThrowableProxyUtil.indent(stringbuilder, i - 1);
+ if(s != null)
+ stringbuilder.append(s);
+ ThrowableProxyUtil.subjoinFirstLineRootCauseFirst(stringbuilder, ithrowableproxy);
+ stringbuilder.append(CoreConstants.LINE_SEPARATOR);
+ subjoinSTEPArray(stringbuilder, i, ithrowableproxy);
+ IThrowableProxy aithrowableproxy[] = ithrowableproxy.getSuppressed();
+ if(aithrowableproxy != null)
+ {
+ int j = aithrowableproxy.length;
+ for(int k = 0; k < j; k++)
+ {
+ IThrowableProxy ithrowableproxy1 = aithrowableproxy[k];
+ recursiveAppendRootCauseFirst(stringbuilder, "Suppressed: ", i + 1, ithrowableproxy1);
+ }
+
+ }
+ }
+
+ protected String throwableProxyToString(IThrowableProxy ithrowableproxy)
+ {
+ StringBuilder stringbuilder = new StringBuilder(2048);
+ recursiveAppendRootCauseFirst(stringbuilder, null, 1, ithrowableproxy);
+ return stringbuilder.toString();
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/SyslogStartConverter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/SyslogStartConverter.java
new file mode 100644
index 0000000..97a8a37
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/SyslogStartConverter.java
@@ -0,0 +1,92 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.pattern;
+
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.classic.util.LevelToSyslogSeverity;
+import ch.qos.logback.core.net.SyslogAppenderBase;
+import java.text.DateFormatSymbols;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+
+// Referenced classes of package ch.qos.logback.classic.pattern:
+// ClassicConverter
+
+public class SyslogStartConverter extends ClassicConverter
+{
+
+ public SyslogStartConverter()
+ {
+ lastTimestamp = -1L;
+ timesmapStr = null;
+ }
+
+ String computeTimeStampString(long l)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ if(l != lastTimestamp)
+ {
+ lastTimestamp = l;
+ timesmapStr = simpleFormat.format(new Date(l));
+ }
+ String s = timesmapStr;
+ return s;
+ }
+
+ public String convert(ILoggingEvent iloggingevent)
+ {
+ StringBuilder stringbuilder = new StringBuilder();
+ int i = facility + LevelToSyslogSeverity.convert(iloggingevent);
+ stringbuilder.append("<");
+ stringbuilder.append(i);
+ stringbuilder.append(">");
+ stringbuilder.append(computeTimeStampString(iloggingevent.getTimeStamp()));
+ stringbuilder.append(' ');
+ stringbuilder.append("localhost");
+ stringbuilder.append(' ');
+ return stringbuilder.toString();
+ }
+
+ public volatile String convert(Object obj)
+ {
+ return convert((ILoggingEvent)obj);
+ }
+
+ public void start()
+ {
+ boolean flag;
+ String s;
+ flag = false;
+ s = getFirstOption();
+ if(s != null) goto _L2; else goto _L1
+_L1:
+ addError("was expecting a facility string as an option");
+_L4:
+ return;
+_L2:
+ facility = SyslogAppenderBase.facilityStringToint(s);
+ try
+ {
+ simpleFormat = new SimpleDateFormat("MMM dd HH:mm:ss", new DateFormatSymbols(Locale.US));
+ }
+ catch(IllegalArgumentException illegalargumentexception)
+ {
+ addError("Could not instantiate SimpleDateFormat", illegalargumentexception);
+ flag = true;
+ }
+ if(!flag)
+ super.start();
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ int facility;
+ long lastTimestamp;
+ final String localHostName = "localhost";
+ SimpleDateFormat simpleFormat;
+ String timesmapStr;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/TargetLengthBasedClassNameAbbreviator.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/TargetLengthBasedClassNameAbbreviator.java
new file mode 100644
index 0000000..fcf14f4
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/TargetLengthBasedClassNameAbbreviator.java
@@ -0,0 +1,120 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.pattern;
+
+import java.io.PrintStream;
+
+// Referenced classes of package ch.qos.logback.classic.pattern:
+// Abbreviator
+
+public class TargetLengthBasedClassNameAbbreviator
+ implements Abbreviator
+{
+
+ public TargetLengthBasedClassNameAbbreviator(int i)
+ {
+ targetLength = i;
+ }
+
+ static int computeDotIndexes(String s, int ai[])
+ {
+ int i = 0;
+ int j = 0;
+ do
+ {
+ int k = s.indexOf('.', i);
+ if(k != -1 && j < 16)
+ {
+ ai[j] = k;
+ j++;
+ i = k + 1;
+ } else
+ {
+ return j;
+ }
+ } while(true);
+ }
+
+ static void printArray(String s, int ai[])
+ {
+ System.out.print(s);
+ int i = 0;
+ while(i < ai.length)
+ {
+ if(i == 0)
+ System.out.print(ai[i]);
+ else
+ System.out.print((new StringBuilder()).append(", ").append(ai[i]).toString());
+ i++;
+ }
+ System.out.println();
+ }
+
+ public String abbreviate(String s)
+ {
+ StringBuilder stringbuilder;
+ stringbuilder = new StringBuilder(targetLength);
+ if(s == null)
+ throw new IllegalArgumentException("Class name may not be null");
+ if(s.length() >= targetLength) goto _L2; else goto _L1
+_L1:
+ return s;
+_L2:
+ int ai[] = new int[16];
+ int ai1[] = new int[17];
+ int i = computeDotIndexes(s, ai);
+ if(i != 0)
+ {
+ computeLengthArray(s, ai, ai1, i);
+ int j = 0;
+ while(j <= i)
+ {
+ if(j == 0)
+ stringbuilder.append(s.substring(0, -1 + ai1[j]));
+ else
+ stringbuilder.append(s.substring(ai[j - 1], ai[j - 1] + ai1[j]));
+ j++;
+ }
+ s = stringbuilder.toString();
+ }
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ void computeLengthArray(String s, int ai[], int ai1[], int i)
+ {
+ int j = s.length() - targetLength;
+ int k = 0;
+ int l = j;
+ while(k < i)
+ {
+ int j1 = -1;
+ if(k > 0)
+ j1 = ai[k - 1];
+ int k1 = -1 + (ai[k] - j1);
+ if(k1 >= 1);
+ int l1;
+ int i2;
+ if(l > 0)
+ {
+ if(k1 < 1)
+ l1 = k1;
+ else
+ l1 = 1;
+ } else
+ {
+ l1 = k1;
+ }
+ i2 = l - (k1 - l1);
+ ai1[k] = l1 + 1;
+ k++;
+ l = i2;
+ }
+ int i1 = i - 1;
+ ai1[i] = s.length() - ai[i1];
+ }
+
+ final int targetLength;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/ThreadConverter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/ThreadConverter.java
new file mode 100644
index 0000000..615b29e
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/ThreadConverter.java
@@ -0,0 +1,28 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.pattern;
+
+import ch.qos.logback.classic.spi.ILoggingEvent;
+
+// Referenced classes of package ch.qos.logback.classic.pattern:
+// ClassicConverter
+
+public class ThreadConverter extends ClassicConverter
+{
+
+ public ThreadConverter()
+ {
+ }
+
+ public String convert(ILoggingEvent iloggingevent)
+ {
+ return iloggingevent.getThreadName();
+ }
+
+ public volatile String convert(Object obj)
+ {
+ return convert((ILoggingEvent)obj);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/ThrowableHandlingConverter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/ThrowableHandlingConverter.java
new file mode 100644
index 0000000..75c43c6
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/ThrowableHandlingConverter.java
@@ -0,0 +1,22 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.pattern;
+
+
+// Referenced classes of package ch.qos.logback.classic.pattern:
+// ClassicConverter
+
+public abstract class ThrowableHandlingConverter extends ClassicConverter
+{
+
+ public ThrowableHandlingConverter()
+ {
+ }
+
+ boolean handlesThrowable()
+ {
+ return true;
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/ThrowableProxyConverter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/ThrowableProxyConverter.java
new file mode 100644
index 0000000..5436e26
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/ThrowableProxyConverter.java
@@ -0,0 +1,216 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.pattern;
+
+import ch.qos.logback.classic.spi.*;
+import ch.qos.logback.core.Context;
+import ch.qos.logback.core.CoreConstants;
+import ch.qos.logback.core.boolex.EvaluationException;
+import ch.qos.logback.core.boolex.EventEvaluator;
+import ch.qos.logback.core.status.ErrorStatus;
+import java.util.*;
+
+// Referenced classes of package ch.qos.logback.classic.pattern:
+// ThrowableHandlingConverter
+
+public class ThrowableProxyConverter extends ThrowableHandlingConverter
+{
+
+ public ThrowableProxyConverter()
+ {
+ evaluatorList = null;
+ errorCount = 0;
+ }
+
+ private void addEvaluator(EventEvaluator eventevaluator)
+ {
+ if(evaluatorList == null)
+ evaluatorList = new ArrayList();
+ evaluatorList.add(eventevaluator);
+ }
+
+ private void recursiveAppend(StringBuilder stringbuilder, String s, int i, IThrowableProxy ithrowableproxy)
+ {
+ if(ithrowableproxy != null)
+ {
+ subjoinFirstLine(stringbuilder, s, i, ithrowableproxy);
+ stringbuilder.append(CoreConstants.LINE_SEPARATOR);
+ subjoinSTEPArray(stringbuilder, i, ithrowableproxy);
+ IThrowableProxy aithrowableproxy[] = ithrowableproxy.getSuppressed();
+ if(aithrowableproxy != null)
+ {
+ int j = aithrowableproxy.length;
+ for(int k = 0; k < j; k++)
+ {
+ IThrowableProxy ithrowableproxy1 = aithrowableproxy[k];
+ recursiveAppend(stringbuilder, "Suppressed: ", i + 1, ithrowableproxy1);
+ }
+
+ }
+ recursiveAppend(stringbuilder, "Caused by: ", i, ithrowableproxy.getCause());
+ }
+ }
+
+ private void subjoinExceptionMessage(StringBuilder stringbuilder, IThrowableProxy ithrowableproxy)
+ {
+ stringbuilder.append(ithrowableproxy.getClassName()).append(": ").append(ithrowableproxy.getMessage());
+ }
+
+ private void subjoinFirstLine(StringBuilder stringbuilder, String s, int i, IThrowableProxy ithrowableproxy)
+ {
+ ThrowableProxyUtil.indent(stringbuilder, i - 1);
+ if(s != null)
+ stringbuilder.append(s);
+ subjoinExceptionMessage(stringbuilder, ithrowableproxy);
+ }
+
+ public String convert(ILoggingEvent iloggingevent)
+ {
+ boolean flag;
+ IThrowableProxy ithrowableproxy;
+ flag = false;
+ ithrowableproxy = iloggingevent.getThrowableProxy();
+ if(ithrowableproxy != null) goto _L2; else goto _L1
+_L1:
+ String s = "";
+_L8:
+ return s;
+_L2:
+ if(evaluatorList == null) goto _L4; else goto _L3
+_L3:
+ int i = 0;
+_L9:
+ EventEvaluator eventevaluator;
+ if(i >= evaluatorList.size())
+ break MISSING_BLOCK_LABEL_232;
+ eventevaluator = (EventEvaluator)evaluatorList.get(i);
+ boolean flag1 = eventevaluator.evaluate(iloggingevent);
+ if(!flag1) goto _L6; else goto _L5
+_L5:
+ if(flag) goto _L4; else goto _L7
+_L7:
+ s = "";
+ goto _L8
+ EvaluationException evaluationexception;
+ evaluationexception;
+ errorCount = 1 + errorCount;
+ if(errorCount < 4)
+ addError((new StringBuilder()).append("Exception thrown for evaluator named [").append(eventevaluator.getName()).append("]").toString(), evaluationexception);
+ else
+ if(errorCount == 4)
+ {
+ ErrorStatus errorstatus = new ErrorStatus((new StringBuilder()).append("Exception thrown for evaluator named [").append(eventevaluator.getName()).append("].").toString(), this, evaluationexception);
+ errorstatus.add(new ErrorStatus("This was the last warning about this evaluator's errors.We don't want the StatusManager to get flooded.", this));
+ addStatus(errorstatus);
+ }
+_L6:
+ i++;
+ goto _L9
+_L4:
+ s = throwableProxyToString(ithrowableproxy);
+ goto _L8
+ flag = true;
+ goto _L5
+ }
+
+ public volatile String convert(Object obj)
+ {
+ return convert((ILoggingEvent)obj);
+ }
+
+ protected void extraData(StringBuilder stringbuilder, StackTraceElementProxy stacktraceelementproxy)
+ {
+ }
+
+ public void start()
+ {
+ String s = getFirstOption();
+ List list;
+ if(s == null)
+ {
+ lengthOption = 0x7fffffff;
+ } else
+ {
+ String s1 = s.toLowerCase();
+ if("full".equals(s1))
+ lengthOption = 0x7fffffff;
+ else
+ if("short".equals(s1))
+ lengthOption = 1;
+ else
+ try
+ {
+ lengthOption = Integer.parseInt(s1);
+ }
+ catch(NumberFormatException numberformatexception)
+ {
+ addError((new StringBuilder()).append("Could not parse [").append(s1).append("] as an integer").toString());
+ lengthOption = 0x7fffffff;
+ }
+ }
+ list = getOptionList();
+ if(list != null && list.size() > 1)
+ {
+ int i = list.size();
+ for(int j = 1; j < i; j++)
+ {
+ String s2 = (String)list.get(j);
+ addEvaluator((EventEvaluator)((Map)getContext().getObject("EVALUATOR_MAP")).get(s2));
+ }
+
+ }
+ super.start();
+ }
+
+ public void stop()
+ {
+ evaluatorList = null;
+ super.stop();
+ }
+
+ protected void subjoinSTEPArray(StringBuilder stringbuilder, int i, IThrowableProxy ithrowableproxy)
+ {
+ int j = 0;
+ StackTraceElementProxy astacktraceelementproxy[] = ithrowableproxy.getStackTraceElementProxyArray();
+ int k = ithrowableproxy.getCommonFrames();
+ boolean flag;
+ int l;
+ if(lengthOption > astacktraceelementproxy.length)
+ flag = true;
+ else
+ flag = false;
+ if(flag)
+ l = astacktraceelementproxy.length;
+ else
+ l = lengthOption;
+ if(k > 0 && flag)
+ l -= k;
+ for(; j < l; j++)
+ {
+ ThrowableProxyUtil.indent(stringbuilder, i);
+ stringbuilder.append(astacktraceelementproxy[j]);
+ extraData(stringbuilder, astacktraceelementproxy[j]);
+ stringbuilder.append(CoreConstants.LINE_SEPARATOR);
+ }
+
+ if(k > 0 && flag)
+ {
+ ThrowableProxyUtil.indent(stringbuilder, i);
+ stringbuilder.append("... ").append(ithrowableproxy.getCommonFrames()).append(" common frames omitted").append(CoreConstants.LINE_SEPARATOR);
+ }
+ }
+
+ protected String throwableProxyToString(IThrowableProxy ithrowableproxy)
+ {
+ StringBuilder stringbuilder = new StringBuilder(2048);
+ recursiveAppend(stringbuilder, null, 1, ithrowableproxy);
+ return stringbuilder.toString();
+ }
+
+ protected static final int BUILDER_CAPACITY = 2048;
+ int errorCount;
+ List evaluatorList;
+ int lengthOption;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/color/HighlightingCompositeConverter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/color/HighlightingCompositeConverter.java
new file mode 100644
index 0000000..70c2eaa
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/pattern/color/HighlightingCompositeConverter.java
@@ -0,0 +1,46 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.pattern.color;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.pattern.color.ForegroundCompositeConverterBase;
+
+public class HighlightingCompositeConverter extends ForegroundCompositeConverterBase
+{
+
+ public HighlightingCompositeConverter()
+ {
+ }
+
+ protected String getForegroundColorCode(ILoggingEvent iloggingevent)
+ {
+ iloggingevent.getLevel().toInt();
+ JVM INSTR lookupswitch 3: default 44
+ // 20000: 61
+ // 30000: 55
+ // 40000: 49;
+ goto _L1 _L2 _L3 _L4
+_L1:
+ String s = "39";
+_L6:
+ return s;
+_L4:
+ s = "1;31";
+ continue; /* Loop/switch isn't completed */
+_L3:
+ s = "31";
+ continue; /* Loop/switch isn't completed */
+_L2:
+ s = "34";
+ if(true) goto _L6; else goto _L5
+_L5:
+ }
+
+ protected volatile String getForegroundColorCode(Object obj)
+ {
+ return getForegroundColorCode((ILoggingEvent)obj);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/selector/ContextSelector.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/selector/ContextSelector.java
new file mode 100644
index 0000000..f652371
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/selector/ContextSelector.java
@@ -0,0 +1,22 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.selector;
+
+import ch.qos.logback.classic.LoggerContext;
+import java.util.List;
+
+public interface ContextSelector
+{
+
+ public abstract LoggerContext detachLoggerContext(String s);
+
+ public abstract List getContextNames();
+
+ public abstract LoggerContext getDefaultLoggerContext();
+
+ public abstract LoggerContext getLoggerContext();
+
+ public abstract LoggerContext getLoggerContext(String s);
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/selector/DefaultContextSelector.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/selector/DefaultContextSelector.java
new file mode 100644
index 0000000..89d05cf
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/selector/DefaultContextSelector.java
@@ -0,0 +1,56 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.selector;
+
+import ch.qos.logback.classic.LoggerContext;
+import java.util.Arrays;
+import java.util.List;
+
+// Referenced classes of package ch.qos.logback.classic.selector:
+// ContextSelector
+
+public class DefaultContextSelector
+ implements ContextSelector
+{
+
+ public DefaultContextSelector(LoggerContext loggercontext)
+ {
+ defaultLoggerContext = loggercontext;
+ }
+
+ public LoggerContext detachLoggerContext(String s)
+ {
+ return defaultLoggerContext;
+ }
+
+ public List getContextNames()
+ {
+ String as[] = new String[1];
+ as[0] = defaultLoggerContext.getName();
+ return Arrays.asList(as);
+ }
+
+ public LoggerContext getDefaultLoggerContext()
+ {
+ return defaultLoggerContext;
+ }
+
+ public LoggerContext getLoggerContext()
+ {
+ return getDefaultLoggerContext();
+ }
+
+ public LoggerContext getLoggerContext(String s)
+ {
+ LoggerContext loggercontext;
+ if(defaultLoggerContext.getName().equals(s))
+ loggercontext = defaultLoggerContext;
+ else
+ loggercontext = null;
+ return loggercontext;
+ }
+
+ private LoggerContext defaultLoggerContext;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/sift/AppenderFactoryUsingJoran.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/sift/AppenderFactoryUsingJoran.java
new file mode 100644
index 0000000..529b22c
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/sift/AppenderFactoryUsingJoran.java
@@ -0,0 +1,27 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.sift;
+
+import ch.qos.logback.core.sift.AbstractAppenderFactoryUsingJoran;
+import ch.qos.logback.core.sift.SiftingJoranConfiguratorBase;
+import java.util.List;
+import java.util.Map;
+
+// Referenced classes of package ch.qos.logback.classic.sift:
+// SiftingJoranConfigurator
+
+public class AppenderFactoryUsingJoran extends AbstractAppenderFactoryUsingJoran
+{
+
+ AppenderFactoryUsingJoran(List list, String s, Map map)
+ {
+ super(list, s, map);
+ }
+
+ public SiftingJoranConfiguratorBase getSiftingJoranConfigurator(String s)
+ {
+ return new SiftingJoranConfigurator(key, s, parentPropertyMap);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/sift/ContextBasedDiscriminator.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/sift/ContextBasedDiscriminator.java
new file mode 100644
index 0000000..3995514
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/sift/ContextBasedDiscriminator.java
@@ -0,0 +1,53 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.sift;
+
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.classic.spi.LoggerContextVO;
+import ch.qos.logback.core.sift.AbstractDiscriminator;
+
+public class ContextBasedDiscriminator extends AbstractDiscriminator
+{
+
+ public ContextBasedDiscriminator()
+ {
+ }
+
+ public String getDefaultValue()
+ {
+ return defaultValue;
+ }
+
+ public String getDiscriminatingValue(ILoggingEvent iloggingevent)
+ {
+ String s = iloggingevent.getLoggerContextVO().getName();
+ if(s == null)
+ s = defaultValue;
+ return s;
+ }
+
+ public volatile String getDiscriminatingValue(Object obj)
+ {
+ return getDiscriminatingValue((ILoggingEvent)obj);
+ }
+
+ public String getKey()
+ {
+ return "contextName";
+ }
+
+ public void setDefaultValue(String s)
+ {
+ defaultValue = s;
+ }
+
+ public void setKey(String s)
+ {
+ throw new UnsupportedOperationException("Key cannot be set. Using fixed key contextName");
+ }
+
+ private static final String KEY = "contextName";
+ private String defaultValue;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/sift/MDCBasedDiscriminator.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/sift/MDCBasedDiscriminator.java
new file mode 100644
index 0000000..5118157
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/sift/MDCBasedDiscriminator.java
@@ -0,0 +1,79 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.sift;
+
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.sift.AbstractDiscriminator;
+import ch.qos.logback.core.util.OptionHelper;
+import java.util.Map;
+
+public class MDCBasedDiscriminator extends AbstractDiscriminator
+{
+
+ public MDCBasedDiscriminator()
+ {
+ }
+
+ public String getDefaultValue()
+ {
+ return defaultValue;
+ }
+
+ public String getDiscriminatingValue(ILoggingEvent iloggingevent)
+ {
+ Map map = iloggingevent.getMDCPropertyMap();
+ if(map != null) goto _L2; else goto _L1
+_L1:
+ String s = defaultValue;
+_L4:
+ return s;
+_L2:
+ s = (String)map.get(key);
+ if(s == null)
+ s = defaultValue;
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ public volatile String getDiscriminatingValue(Object obj)
+ {
+ return getDiscriminatingValue((ILoggingEvent)obj);
+ }
+
+ public String getKey()
+ {
+ return key;
+ }
+
+ public void setDefaultValue(String s)
+ {
+ defaultValue = s;
+ }
+
+ public void setKey(String s)
+ {
+ key = s;
+ }
+
+ public void start()
+ {
+ int i = 0;
+ if(OptionHelper.isEmpty(key))
+ {
+ addError("The \"Key\" property must be set");
+ i = 1;
+ }
+ if(OptionHelper.isEmpty(defaultValue))
+ {
+ i++;
+ addError("The \"DefaultValue\" property must be set");
+ }
+ if(i == 0)
+ started = true;
+ }
+
+ private String defaultValue;
+ private String key;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/sift/SiftAction.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/sift/SiftAction.java
new file mode 100644
index 0000000..54ccdb0
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/sift/SiftAction.java
@@ -0,0 +1,58 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.sift;
+
+import ch.qos.logback.core.joran.action.Action;
+import ch.qos.logback.core.joran.event.InPlayListener;
+import ch.qos.logback.core.joran.event.SaxEvent;
+import ch.qos.logback.core.joran.spi.ActionException;
+import ch.qos.logback.core.joran.spi.InterpretationContext;
+import java.util.ArrayList;
+import java.util.List;
+import org.xml.sax.Attributes;
+
+// Referenced classes of package ch.qos.logback.classic.sift:
+// SiftingAppender, AppenderFactoryUsingJoran
+
+public class SiftAction extends Action
+ implements InPlayListener
+{
+
+ public SiftAction()
+ {
+ }
+
+ public void begin(InterpretationContext interpretationcontext, String s, Attributes attributes)
+ throws ActionException
+ {
+ seList = new ArrayList();
+ interpretationcontext.addInPlayListener(this);
+ }
+
+ public void end(InterpretationContext interpretationcontext, String s)
+ throws ActionException
+ {
+ interpretationcontext.removeInPlayListener(this);
+ Object obj = interpretationcontext.peekObject();
+ if(obj instanceof SiftingAppender)
+ {
+ SiftingAppender siftingappender = (SiftingAppender)obj;
+ java.util.Map map = interpretationcontext.getCopyOfPropertyMap();
+ siftingappender.setAppenderFactory(new AppenderFactoryUsingJoran(seList, siftingappender.getDiscriminatorKey(), map));
+ }
+ }
+
+ public List getSeList()
+ {
+ return seList;
+ }
+
+ public void inPlay(SaxEvent saxevent)
+ {
+ seList.add(saxevent);
+ }
+
+ List seList;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/sift/SiftingAppender.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/sift/SiftingAppender.java
new file mode 100644
index 0000000..6c8ca0a
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/sift/SiftingAppender.java
@@ -0,0 +1,50 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.sift;
+
+import ch.qos.logback.classic.ClassicConstants;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.sift.Discriminator;
+import ch.qos.logback.core.sift.SiftingAppenderBase;
+import org.slf4j.Marker;
+
+public class SiftingAppender extends SiftingAppenderBase
+{
+
+ public SiftingAppender()
+ {
+ }
+
+ protected boolean eventMarksEndOfLife(ILoggingEvent iloggingevent)
+ {
+ Marker marker = iloggingevent.getMarker();
+ boolean flag;
+ if(marker == null)
+ flag = false;
+ else
+ flag = marker.contains(ClassicConstants.FINALIZE_SESSION_MARKER);
+ return flag;
+ }
+
+ protected volatile boolean eventMarksEndOfLife(Object obj)
+ {
+ return eventMarksEndOfLife((ILoggingEvent)obj);
+ }
+
+ protected long getTimestamp(ILoggingEvent iloggingevent)
+ {
+ return iloggingevent.getTimeStamp();
+ }
+
+ protected volatile long getTimestamp(Object obj)
+ {
+ return getTimestamp((ILoggingEvent)obj);
+ }
+
+ public void setDiscriminator(Discriminator discriminator)
+ {
+ super.setDiscriminator(discriminator);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/sift/SiftingJoranConfigurator.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/sift/SiftingJoranConfigurator.java
new file mode 100644
index 0000000..db7e0cd
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/sift/SiftingJoranConfigurator.java
@@ -0,0 +1,62 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.sift;
+
+import ch.qos.logback.classic.util.DefaultNestedComponentRules;
+import ch.qos.logback.core.Appender;
+import ch.qos.logback.core.joran.action.AppenderAction;
+import ch.qos.logback.core.joran.spi.*;
+import ch.qos.logback.core.sift.SiftingJoranConfiguratorBase;
+import java.util.*;
+
+public class SiftingJoranConfigurator extends SiftingJoranConfiguratorBase
+{
+
+ SiftingJoranConfigurator(String s, String s1, Map map)
+ {
+ super(s, s1, map);
+ }
+
+ protected void addDefaultNestedComponentRegistryRules(DefaultNestedComponentRegistry defaultnestedcomponentregistry)
+ {
+ DefaultNestedComponentRules.addDefaultNestedComponentRegistryRules(defaultnestedcomponentregistry);
+ }
+
+ protected void addInstanceRules(RuleStore rulestore)
+ {
+ super.addInstanceRules(rulestore);
+ rulestore.addRule(new ElementSelector("configuration/appender"), new AppenderAction());
+ }
+
+ protected void buildInterpreter()
+ {
+ super.buildInterpreter();
+ Map map = interpreter.getInterpretationContext().getObjectMap();
+ map.put("APPENDER_BAG", new HashMap());
+ map.put("FILTER_CHAIN_BAG", new HashMap());
+ HashMap hashmap = new HashMap();
+ hashmap.putAll(parentPropertyMap);
+ hashmap.put(key, value);
+ interpreter.setInterpretationContextPropertiesMap(hashmap);
+ }
+
+ public Appender getAppender()
+ {
+ HashMap hashmap = (HashMap)interpreter.getInterpretationContext().getObjectMap().get("APPENDER_BAG");
+ oneAndOnlyOneCheck(hashmap);
+ Collection collection = hashmap.values();
+ Appender appender;
+ if(collection.size() == 0)
+ appender = null;
+ else
+ appender = (Appender)collection.iterator().next();
+ return appender;
+ }
+
+ protected ElementPath initialElementPath()
+ {
+ return new ElementPath("configuration");
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/CallerData.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/CallerData.java
new file mode 100644
index 0000000..146187c
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/CallerData.java
@@ -0,0 +1,109 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.spi;
+
+import ch.qos.logback.core.CoreConstants;
+import java.util.Iterator;
+import java.util.List;
+
+public class CallerData
+{
+
+ public CallerData()
+ {
+ }
+
+ public static StackTraceElement[] extract(Throwable throwable, String s, int i, List list)
+ {
+ int j = 0;
+ if(throwable != null) goto _L2; else goto _L1
+_L1:
+ StackTraceElement astacktraceelement1[] = null;
+_L10:
+ return astacktraceelement1;
+_L2:
+ StackTraceElement astacktraceelement[];
+ int k;
+ int l;
+ astacktraceelement = throwable.getStackTrace();
+ k = 0;
+ l = -1;
+_L7:
+ if(k >= astacktraceelement.length) goto _L4; else goto _L3
+_L3:
+ if(!isInFrameworkSpace(astacktraceelement[k].getClassName(), s, list)) goto _L6; else goto _L5
+_L5:
+ l = k + 1;
+_L8:
+ k++;
+ goto _L7
+_L6:
+ if(l == -1) goto _L8; else goto _L4
+_L4:
+ if(l != -1)
+ break; /* Loop/switch isn't completed */
+ astacktraceelement1 = EMPTY_CALLER_DATA_ARRAY;
+ if(true) goto _L10; else goto _L9
+_L9:
+ int i1 = astacktraceelement.length - l;
+ if(i >= i1)
+ i = i1;
+ astacktraceelement1 = new StackTraceElement[i];
+ while(j < i)
+ {
+ astacktraceelement1[j] = astacktraceelement[l + j];
+ j++;
+ }
+ if(true) goto _L10; else goto _L11
+_L11:
+ }
+
+ static boolean isInFrameworkSpace(String s, String s1, List list)
+ {
+ boolean flag;
+ if(s.equals(s1) || s.equals("org.apache.log4j.Category") || s.startsWith("org.slf4j.Logger") || isInFrameworkSpaceList(s, list))
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ private static boolean isInFrameworkSpaceList(String s, List list)
+ {
+ if(list != null) goto _L2; else goto _L1
+_L1:
+ boolean flag = false;
+_L4:
+ return flag;
+_L2:
+ for(Iterator iterator = list.iterator(); iterator.hasNext();)
+ if(s.startsWith((String)iterator.next()))
+ {
+ flag = true;
+ continue; /* Loop/switch isn't completed */
+ }
+
+ flag = false;
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ public static StackTraceElement naInstance()
+ {
+ return new StackTraceElement("?", "?", "?", -1);
+ }
+
+ public static final String CALLER_DATA_NA;
+ public static final StackTraceElement EMPTY_CALLER_DATA_ARRAY[] = new StackTraceElement[0];
+ public static final int LINE_NA = -1;
+ private static final String LOG4J_CATEGORY = "org.apache.log4j.Category";
+ public static final String NA = "?";
+ private static final String SLF4J_BOUNDARY = "org.slf4j.Logger";
+
+ static
+ {
+ CALLER_DATA_NA = (new StringBuilder()).append("?#?:?").append(CoreConstants.LINE_SEPARATOR).toString();
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/ClassPackagingData.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/ClassPackagingData.java
new file mode 100644
index 0000000..b74f297
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/ClassPackagingData.java
@@ -0,0 +1,101 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.spi;
+
+import java.io.Serializable;
+
+public class ClassPackagingData
+ implements Serializable
+{
+
+ public ClassPackagingData(String s, String s1)
+ {
+ codeLocation = s;
+ version = s1;
+ exact = true;
+ }
+
+ public ClassPackagingData(String s, String s1, boolean flag)
+ {
+ codeLocation = s;
+ version = s1;
+ exact = flag;
+ }
+
+ public boolean equals(Object obj)
+ {
+ boolean flag = true;
+ if(this != obj) goto _L2; else goto _L1
+_L1:
+ return flag;
+_L2:
+ if(obj == null)
+ {
+ flag = false;
+ continue; /* Loop/switch isn't completed */
+ }
+ if(getClass() != obj.getClass())
+ {
+ flag = false;
+ continue; /* Loop/switch isn't completed */
+ }
+ ClassPackagingData classpackagingdata = (ClassPackagingData)obj;
+ if(codeLocation == null)
+ {
+ if(classpackagingdata.codeLocation != null)
+ {
+ flag = false;
+ continue; /* Loop/switch isn't completed */
+ }
+ } else
+ if(!codeLocation.equals(classpackagingdata.codeLocation))
+ {
+ flag = false;
+ continue; /* Loop/switch isn't completed */
+ }
+ if(exact != classpackagingdata.exact)
+ flag = false;
+ else
+ if(version == null)
+ {
+ if(classpackagingdata.version != null)
+ flag = false;
+ } else
+ if(!version.equals(classpackagingdata.version))
+ flag = false;
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ public String getCodeLocation()
+ {
+ return codeLocation;
+ }
+
+ public String getVersion()
+ {
+ return version;
+ }
+
+ public int hashCode()
+ {
+ int i;
+ if(codeLocation == null)
+ i = 0;
+ else
+ i = codeLocation.hashCode();
+ return i + 31;
+ }
+
+ public boolean isExact()
+ {
+ return exact;
+ }
+
+ private static final long serialVersionUID = 0xf4d55532ec138717L;
+ final String codeLocation;
+ private final boolean exact;
+ final String version;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/EventArgUtil.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/EventArgUtil.java
new file mode 100644
index 0000000..8bf5b8d
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/EventArgUtil.java
@@ -0,0 +1,60 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.spi;
+
+
+public class EventArgUtil
+{
+
+ public EventArgUtil()
+ {
+ }
+
+ public static Object[] arrangeArguments(Object aobj[])
+ {
+ return aobj;
+ }
+
+ public static final Throwable extractThrowable(Object aobj[])
+ {
+ Throwable throwable;
+ if(aobj == null || aobj.length == 0)
+ {
+ throwable = null;
+ } else
+ {
+ Object obj = aobj[-1 + aobj.length];
+ if(obj instanceof Throwable)
+ throwable = (Throwable)obj;
+ else
+ throwable = null;
+ }
+ return throwable;
+ }
+
+ public static boolean successfulExtraction(Throwable throwable)
+ {
+ boolean flag;
+ if(throwable != null)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ public static Object[] trimmedCopy(Object aobj[])
+ {
+ if(aobj == null || aobj.length == 0)
+ {
+ throw new IllegalStateException("non-sensical empty or null argument array");
+ } else
+ {
+ int i = -1 + aobj.length;
+ Object aobj1[] = new Object[i];
+ System.arraycopy(((Object) (aobj)), 0, ((Object) (aobj1)), 0, i);
+ return aobj1;
+ }
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/ILoggingEvent.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/ILoggingEvent.java
new file mode 100644
index 0000000..892e7e0
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/ILoggingEvent.java
@@ -0,0 +1,48 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.spi;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.core.spi.DeferredProcessingAware;
+import java.util.Map;
+import org.slf4j.Marker;
+
+// Referenced classes of package ch.qos.logback.classic.spi:
+// LoggerContextVO, IThrowableProxy
+
+public interface ILoggingEvent
+ extends DeferredProcessingAware
+{
+
+ public abstract Object[] getArgumentArray();
+
+ public abstract StackTraceElement[] getCallerData();
+
+ public abstract String getFormattedMessage();
+
+ public abstract Level getLevel();
+
+ public abstract LoggerContextVO getLoggerContextVO();
+
+ public abstract String getLoggerName();
+
+ public abstract Map getMDCPropertyMap();
+
+ public abstract Marker getMarker();
+
+ public abstract Map getMdc();
+
+ public abstract String getMessage();
+
+ public abstract String getThreadName();
+
+ public abstract IThrowableProxy getThrowableProxy();
+
+ public abstract long getTimeStamp();
+
+ public abstract boolean hasCallerData();
+
+ public abstract void prepareForDeferredProcessing();
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/IThrowableProxy.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/IThrowableProxy.java
new file mode 100644
index 0000000..e07bffd
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/IThrowableProxy.java
@@ -0,0 +1,25 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.spi;
+
+
+// Referenced classes of package ch.qos.logback.classic.spi:
+// StackTraceElementProxy
+
+public interface IThrowableProxy
+{
+
+ public abstract IThrowableProxy getCause();
+
+ public abstract String getClassName();
+
+ public abstract int getCommonFrames();
+
+ public abstract String getMessage();
+
+ public abstract StackTraceElementProxy[] getStackTraceElementProxyArray();
+
+ public abstract IThrowableProxy[] getSuppressed();
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/LoggerComparator.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/LoggerComparator.java
new file mode 100644
index 0000000..d8fbfde
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/LoggerComparator.java
@@ -0,0 +1,41 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.spi;
+
+import ch.qos.logback.classic.Logger;
+import java.io.Serializable;
+import java.util.Comparator;
+
+public class LoggerComparator
+ implements Comparator, Serializable
+{
+
+ public LoggerComparator()
+ {
+ }
+
+ public int compare(Logger logger, Logger logger1)
+ {
+ int i;
+ if(logger.getName().equals(logger1.getName()))
+ i = 0;
+ else
+ if(logger.getName().equals("ROOT"))
+ i = -1;
+ else
+ if(logger1.getName().equals("ROOT"))
+ i = 1;
+ else
+ i = logger.getName().compareTo(logger1.getName());
+ return i;
+ }
+
+ public volatile int compare(Object obj, Object obj1)
+ {
+ return compare((Logger)obj, (Logger)obj1);
+ }
+
+ private static final long serialVersionUID = 1L;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/LoggerContextAware.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/LoggerContextAware.java
new file mode 100644
index 0000000..ff609ac
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/LoggerContextAware.java
@@ -0,0 +1,15 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.spi;
+
+import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.core.spi.ContextAware;
+
+public interface LoggerContextAware
+ extends ContextAware
+{
+
+ public abstract void setLoggerContext(LoggerContext loggercontext);
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/LoggerContextAwareBase.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/LoggerContextAwareBase.java
new file mode 100644
index 0000000..75283e9
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/LoggerContextAwareBase.java
@@ -0,0 +1,43 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.spi;
+
+import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.core.Context;
+import ch.qos.logback.core.spi.ContextAwareBase;
+
+// Referenced classes of package ch.qos.logback.classic.spi:
+// LoggerContextAware
+
+public class LoggerContextAwareBase extends ContextAwareBase
+ implements LoggerContextAware
+{
+
+ public LoggerContextAwareBase()
+ {
+ }
+
+ public LoggerContext getLoggerContext()
+ {
+ return (LoggerContext)context;
+ }
+
+ public void setContext(Context context)
+ {
+ if((context instanceof LoggerContext) || context == null)
+ {
+ super.setContext(context);
+ return;
+ } else
+ {
+ throw new IllegalArgumentException("LoggerContextAwareBase only accepts contexts of type c.l.classic.LoggerContext");
+ }
+ }
+
+ public void setLoggerContext(LoggerContext loggercontext)
+ {
+ super.setContext(loggercontext);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/LoggerContextListener.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/LoggerContextListener.java
new file mode 100644
index 0000000..705ef54
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/LoggerContextListener.java
@@ -0,0 +1,21 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.spi;
+
+import ch.qos.logback.classic.*;
+
+public interface LoggerContextListener
+{
+
+ public abstract boolean isResetResistant();
+
+ public abstract void onLevelChange(Logger logger, Level level);
+
+ public abstract void onReset(LoggerContext loggercontext);
+
+ public abstract void onStart(LoggerContext loggercontext);
+
+ public abstract void onStop(LoggerContext loggercontext);
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/LoggerContextVO.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/LoggerContextVO.java
new file mode 100644
index 0000000..79ff4e1
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/LoggerContextVO.java
@@ -0,0 +1,94 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.spi;
+
+import ch.qos.logback.classic.LoggerContext;
+import java.io.Serializable;
+import java.util.Map;
+
+public class LoggerContextVO
+ implements Serializable
+{
+
+ public LoggerContextVO(LoggerContext loggercontext)
+ {
+ name = loggercontext.getName();
+ propertyMap = loggercontext.getCopyOfPropertyMap();
+ birthTime = loggercontext.getBirthTime();
+ }
+
+ public LoggerContextVO(String s, Map map, long l)
+ {
+ name = s;
+ propertyMap = map;
+ birthTime = l;
+ }
+
+ public boolean equals(Object obj)
+ {
+ boolean flag = true;
+ if(this != obj) goto _L2; else goto _L1
+_L1:
+ return flag;
+_L2:
+ if(!(obj instanceof LoggerContextVO))
+ {
+ flag = false;
+ } else
+ {
+ LoggerContextVO loggercontextvo = (LoggerContextVO)obj;
+ if(birthTime != loggercontextvo.birthTime)
+ flag = false;
+ else
+ if(name == null ? loggercontextvo.name != null : !name.equals(loggercontextvo.name))
+ flag = false;
+ else
+ if(propertyMap == null ? loggercontextvo.propertyMap != null : !propertyMap.equals(loggercontextvo.propertyMap))
+ flag = false;
+ }
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ public long getBirthTime()
+ {
+ return birthTime;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public Map getPropertyMap()
+ {
+ return propertyMap;
+ }
+
+ public int hashCode()
+ {
+ int i = 0;
+ int j;
+ int k;
+ if(name != null)
+ j = name.hashCode();
+ else
+ j = 0;
+ k = j * 31;
+ if(propertyMap != null)
+ i = propertyMap.hashCode();
+ return 31 * (k + i) + (int)(birthTime ^ birthTime >>> 32);
+ }
+
+ public String toString()
+ {
+ return (new StringBuilder()).append("LoggerContextVO{name='").append(name).append('\'').append(", propertyMap=").append(propertyMap).append(", birthTime=").append(birthTime).append('}').toString();
+ }
+
+ private static final long serialVersionUID = 0x4c296032dbfdf2c3L;
+ final long birthTime;
+ final String name;
+ final Map propertyMap;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/LoggerRemoteView.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/LoggerRemoteView.java
new file mode 100644
index 0000000..b1d7267
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/LoggerRemoteView.java
@@ -0,0 +1,54 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.spi;
+
+import ch.qos.logback.classic.LoggerContext;
+import java.io.Serializable;
+
+// Referenced classes of package ch.qos.logback.classic.spi:
+// LoggerContextVO
+
+public class LoggerRemoteView
+ implements Serializable
+{
+
+ public LoggerRemoteView(String s, LoggerContext loggercontext)
+ {
+ name = s;
+ if(!$assertionsDisabled && loggercontext.getLoggerContextRemoteView() == null)
+ {
+ throw new AssertionError();
+ } else
+ {
+ loggerContextView = loggercontext.getLoggerContextRemoteView();
+ return;
+ }
+ }
+
+ public LoggerContextVO getLoggerContextView()
+ {
+ return loggerContextView;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ static final boolean $assertionsDisabled = false;
+ private static final long serialVersionUID = 0x45c7d6c89d9f4ae0L;
+ final LoggerContextVO loggerContextView;
+ final String name;
+
+ static
+ {
+ boolean flag;
+ if(!ch/qos/logback/classic/spi/LoggerRemoteView.desiredAssertionStatus())
+ flag = true;
+ else
+ flag = false;
+ $assertionsDisabled = flag;
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/LoggingEvent.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/LoggingEvent.java
new file mode 100644
index 0000000..af160c4
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/LoggingEvent.java
@@ -0,0 +1,308 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.spi;
+
+import ch.qos.logback.classic.*;
+import ch.qos.logback.classic.util.LogbackMDCAdapter;
+import java.io.IOException;
+import java.io.ObjectOutputStream;
+import java.util.HashMap;
+import java.util.Map;
+import org.slf4j.MDC;
+import org.slf4j.Marker;
+import org.slf4j.helpers.FormattingTuple;
+import org.slf4j.helpers.MessageFormatter;
+import org.slf4j.spi.MDCAdapter;
+
+// Referenced classes of package ch.qos.logback.classic.spi:
+// ILoggingEvent, ThrowableProxy, EventArgUtil, CallerData,
+// LoggerContextVO, IThrowableProxy
+
+public class LoggingEvent
+ implements ILoggingEvent
+{
+
+ public LoggingEvent()
+ {
+ }
+
+ public LoggingEvent(String s, Logger logger, Level level1, String s1, Throwable throwable, Object aobj[])
+ {
+ fqnOfLoggerClass = s;
+ loggerName = logger.getName();
+ loggerContext = logger.getLoggerContext();
+ loggerContextVO = loggerContext.getLoggerContextRemoteView();
+ level = level1;
+ message = s1;
+ argumentArray = aobj;
+ if(throwable == null)
+ throwable = extractThrowableAnRearrangeArguments(aobj);
+ if(throwable != null)
+ {
+ throwableProxy = new ThrowableProxy(throwable);
+ if(logger.getLoggerContext().isPackagingDataEnabled())
+ throwableProxy.calculatePackagingData();
+ }
+ timeStamp = System.currentTimeMillis();
+ }
+
+ private Throwable extractThrowableAnRearrangeArguments(Object aobj[])
+ {
+ Throwable throwable = EventArgUtil.extractThrowable(aobj);
+ if(EventArgUtil.successfulExtraction(throwable))
+ argumentArray = EventArgUtil.trimmedCopy(aobj);
+ return throwable;
+ }
+
+ private void writeObject(ObjectOutputStream objectoutputstream)
+ throws IOException
+ {
+ throw new UnsupportedOperationException((new StringBuilder()).append(getClass()).append(" does not support serialization. ").append("Use LoggerEventVO instance instead. See also LoggerEventVO.build method.").toString());
+ }
+
+ public Object[] getArgumentArray()
+ {
+ return argumentArray;
+ }
+
+ public StackTraceElement[] getCallerData()
+ {
+ if(callerDataArray == null)
+ callerDataArray = CallerData.extract(new Throwable(), fqnOfLoggerClass, loggerContext.getMaxCallerDataDepth(), loggerContext.getFrameworkPackages());
+ return callerDataArray;
+ }
+
+ public long getContextBirthTime()
+ {
+ return loggerContextVO.getBirthTime();
+ }
+
+ public String getFormattedMessage()
+ {
+ String s;
+ if(formattedMessage != null)
+ {
+ s = formattedMessage;
+ } else
+ {
+ if(argumentArray != null)
+ formattedMessage = MessageFormatter.arrayFormat(message, argumentArray).getMessage();
+ else
+ formattedMessage = message;
+ s = formattedMessage;
+ }
+ return s;
+ }
+
+ public Level getLevel()
+ {
+ return level;
+ }
+
+ public LoggerContextVO getLoggerContextVO()
+ {
+ return loggerContextVO;
+ }
+
+ public String getLoggerName()
+ {
+ return loggerName;
+ }
+
+ public Map getMDCPropertyMap()
+ {
+ if(mdcPropertyMap == null)
+ {
+ MDCAdapter mdcadapter = MDC.getMDCAdapter();
+ if(mdcadapter instanceof LogbackMDCAdapter)
+ mdcPropertyMap = ((LogbackMDCAdapter)mdcadapter).getPropertyMap();
+ else
+ mdcPropertyMap = mdcadapter.getCopyOfContextMap();
+ }
+ if(mdcPropertyMap == null)
+ mdcPropertyMap = CACHED_NULL_MAP;
+ return mdcPropertyMap;
+ }
+
+ public Marker getMarker()
+ {
+ return marker;
+ }
+
+ public Map getMdc()
+ {
+ return getMDCPropertyMap();
+ }
+
+ public String getMessage()
+ {
+ return message;
+ }
+
+ public String getThreadName()
+ {
+ if(threadName == null)
+ threadName = Thread.currentThread().getName();
+ return threadName;
+ }
+
+ public IThrowableProxy getThrowableProxy()
+ {
+ return throwableProxy;
+ }
+
+ public long getTimeStamp()
+ {
+ return timeStamp;
+ }
+
+ public boolean hasCallerData()
+ {
+ boolean flag;
+ if(callerDataArray != null)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ public void prepareForDeferredProcessing()
+ {
+ getFormattedMessage();
+ getThreadName();
+ getMDCPropertyMap();
+ }
+
+ public void setArgumentArray(Object aobj[])
+ {
+ if(argumentArray != null)
+ {
+ throw new IllegalStateException("argArray has been already set");
+ } else
+ {
+ argumentArray = aobj;
+ return;
+ }
+ }
+
+ public void setCallerData(StackTraceElement astacktraceelement[])
+ {
+ callerDataArray = astacktraceelement;
+ }
+
+ public void setLevel(Level level1)
+ {
+ if(level != null)
+ {
+ throw new IllegalStateException("The level has been already set for this event.");
+ } else
+ {
+ level = level1;
+ return;
+ }
+ }
+
+ public void setLoggerContextRemoteView(LoggerContextVO loggercontextvo)
+ {
+ loggerContextVO = loggercontextvo;
+ }
+
+ public void setLoggerName(String s)
+ {
+ loggerName = s;
+ }
+
+ public void setMDCPropertyMap(Map map)
+ {
+ if(mdcPropertyMap != null)
+ {
+ throw new IllegalStateException("The MDCPropertyMap has been already set for this event.");
+ } else
+ {
+ mdcPropertyMap = map;
+ return;
+ }
+ }
+
+ public void setMarker(Marker marker1)
+ {
+ if(marker != null)
+ {
+ throw new IllegalStateException("The marker has been already set for this event.");
+ } else
+ {
+ marker = marker1;
+ return;
+ }
+ }
+
+ public void setMessage(String s)
+ {
+ if(message != null)
+ {
+ throw new IllegalStateException("The message for this event has been set already.");
+ } else
+ {
+ message = s;
+ return;
+ }
+ }
+
+ public void setThreadName(String s)
+ throws IllegalStateException
+ {
+ if(threadName != null)
+ {
+ throw new IllegalStateException("threadName has been already set");
+ } else
+ {
+ threadName = s;
+ return;
+ }
+ }
+
+ public void setThrowableProxy(ThrowableProxy throwableproxy)
+ {
+ if(throwableProxy != null)
+ {
+ throw new IllegalStateException("ThrowableProxy has been already set.");
+ } else
+ {
+ throwableProxy = throwableproxy;
+ return;
+ }
+ }
+
+ public void setTimeStamp(long l)
+ {
+ timeStamp = l;
+ }
+
+ public String toString()
+ {
+ StringBuilder stringbuilder = new StringBuilder();
+ stringbuilder.append('[');
+ stringbuilder.append(level).append("] ");
+ stringbuilder.append(getFormattedMessage());
+ return stringbuilder.toString();
+ }
+
+ private static final Map CACHED_NULL_MAP = new HashMap();
+ private transient Object argumentArray[];
+ private StackTraceElement callerDataArray[];
+ transient String formattedMessage;
+ transient String fqnOfLoggerClass;
+ private transient Level level;
+ private LoggerContext loggerContext;
+ private LoggerContextVO loggerContextVO;
+ private String loggerName;
+ private Marker marker;
+ private Map mdcPropertyMap;
+ private String message;
+ private String threadName;
+ private ThrowableProxy throwableProxy;
+ private long timeStamp;
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/LoggingEventVO.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/LoggingEventVO.java
new file mode 100644
index 0000000..0def871
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/LoggingEventVO.java
@@ -0,0 +1,302 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.spi;
+
+import ch.qos.logback.classic.Level;
+import java.io.*;
+import java.util.Map;
+import org.slf4j.Marker;
+import org.slf4j.helpers.FormattingTuple;
+import org.slf4j.helpers.MessageFormatter;
+
+// Referenced classes of package ch.qos.logback.classic.spi:
+// ILoggingEvent, ThrowableProxyVO, LoggerContextVO, IThrowableProxy
+
+public class LoggingEventVO
+ implements ILoggingEvent, Serializable
+{
+
+ public LoggingEventVO()
+ {
+ }
+
+ public static LoggingEventVO build(ILoggingEvent iloggingevent)
+ {
+ LoggingEventVO loggingeventvo = new LoggingEventVO();
+ loggingeventvo.loggerName = iloggingevent.getLoggerName();
+ loggingeventvo.loggerContextVO = iloggingevent.getLoggerContextVO();
+ loggingeventvo.threadName = iloggingevent.getThreadName();
+ loggingeventvo.level = iloggingevent.getLevel();
+ loggingeventvo.message = iloggingevent.getMessage();
+ loggingeventvo.argumentArray = iloggingevent.getArgumentArray();
+ loggingeventvo.marker = iloggingevent.getMarker();
+ loggingeventvo.mdcPropertyMap = iloggingevent.getMDCPropertyMap();
+ loggingeventvo.timeStamp = iloggingevent.getTimeStamp();
+ loggingeventvo.throwableProxy = ThrowableProxyVO.build(iloggingevent.getThrowableProxy());
+ if(iloggingevent.hasCallerData())
+ loggingeventvo.callerDataArray = iloggingevent.getCallerData();
+ return loggingeventvo;
+ }
+
+ private void readObject(ObjectInputStream objectinputstream)
+ throws IOException, ClassNotFoundException
+ {
+ objectinputstream.defaultReadObject();
+ level = Level.toLevel(objectinputstream.readInt());
+ int i = objectinputstream.readInt();
+ if(i != -1)
+ {
+ argumentArray = new String[i];
+ for(int j = 0; j < i; j++)
+ {
+ Object obj = objectinputstream.readObject();
+ if(!"NULL_ARGUMENT_ARRAY_ELEMENT".equals(obj))
+ argumentArray[j] = obj;
+ }
+
+ }
+ }
+
+ private void writeObject(ObjectOutputStream objectoutputstream)
+ throws IOException
+ {
+ objectoutputstream.defaultWriteObject();
+ objectoutputstream.writeInt(level.levelInt);
+ if(argumentArray != null)
+ {
+ objectoutputstream.writeInt(argumentArray.length);
+ int i = 0;
+ while(i < argumentArray.length)
+ {
+ if(argumentArray[i] != null)
+ objectoutputstream.writeObject(argumentArray[i].toString());
+ else
+ objectoutputstream.writeObject("NULL_ARGUMENT_ARRAY_ELEMENT");
+ i++;
+ }
+ } else
+ {
+ objectoutputstream.writeInt(-1);
+ }
+ }
+
+ public boolean equals(Object obj)
+ {
+ boolean flag = true;
+ if(this != obj) goto _L2; else goto _L1
+_L1:
+ return flag;
+_L2:
+ if(obj == null)
+ {
+ flag = false;
+ continue; /* Loop/switch isn't completed */
+ }
+ if(getClass() != obj.getClass())
+ {
+ flag = false;
+ continue; /* Loop/switch isn't completed */
+ }
+ LoggingEventVO loggingeventvo = (LoggingEventVO)obj;
+ if(message == null)
+ {
+ if(loggingeventvo.message != null)
+ {
+ flag = false;
+ continue; /* Loop/switch isn't completed */
+ }
+ } else
+ if(!message.equals(loggingeventvo.message))
+ {
+ flag = false;
+ continue; /* Loop/switch isn't completed */
+ }
+ if(loggerName == null)
+ {
+ if(loggingeventvo.loggerName != null)
+ {
+ flag = false;
+ continue; /* Loop/switch isn't completed */
+ }
+ } else
+ if(!loggerName.equals(loggingeventvo.loggerName))
+ {
+ flag = false;
+ continue; /* Loop/switch isn't completed */
+ }
+ if(threadName == null)
+ {
+ if(loggingeventvo.threadName != null)
+ {
+ flag = false;
+ continue; /* Loop/switch isn't completed */
+ }
+ } else
+ if(!threadName.equals(loggingeventvo.threadName))
+ {
+ flag = false;
+ continue; /* Loop/switch isn't completed */
+ }
+ if(timeStamp != loggingeventvo.timeStamp)
+ {
+ flag = false;
+ continue; /* Loop/switch isn't completed */
+ }
+ if(marker == null)
+ {
+ if(loggingeventvo.marker != null)
+ {
+ flag = false;
+ continue; /* Loop/switch isn't completed */
+ }
+ } else
+ if(!marker.equals(loggingeventvo.marker))
+ {
+ flag = false;
+ continue; /* Loop/switch isn't completed */
+ }
+ if(mdcPropertyMap == null)
+ {
+ if(loggingeventvo.mdcPropertyMap != null)
+ flag = false;
+ } else
+ if(!mdcPropertyMap.equals(loggingeventvo.mdcPropertyMap))
+ flag = false;
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ public Object[] getArgumentArray()
+ {
+ return argumentArray;
+ }
+
+ public StackTraceElement[] getCallerData()
+ {
+ return callerDataArray;
+ }
+
+ public long getContextBirthTime()
+ {
+ return loggerContextVO.getBirthTime();
+ }
+
+ public LoggerContextVO getContextLoggerRemoteView()
+ {
+ return loggerContextVO;
+ }
+
+ public String getFormattedMessage()
+ {
+ String s;
+ if(formattedMessage != null)
+ {
+ s = formattedMessage;
+ } else
+ {
+ if(argumentArray != null)
+ formattedMessage = MessageFormatter.arrayFormat(message, argumentArray).getMessage();
+ else
+ formattedMessage = message;
+ s = formattedMessage;
+ }
+ return s;
+ }
+
+ public Level getLevel()
+ {
+ return level;
+ }
+
+ public LoggerContextVO getLoggerContextVO()
+ {
+ return loggerContextVO;
+ }
+
+ public String getLoggerName()
+ {
+ return loggerName;
+ }
+
+ public Map getMDCPropertyMap()
+ {
+ return mdcPropertyMap;
+ }
+
+ public Marker getMarker()
+ {
+ return marker;
+ }
+
+ public Map getMdc()
+ {
+ return mdcPropertyMap;
+ }
+
+ public String getMessage()
+ {
+ return message;
+ }
+
+ public String getThreadName()
+ {
+ return threadName;
+ }
+
+ public IThrowableProxy getThrowableProxy()
+ {
+ return throwableProxy;
+ }
+
+ public long getTimeStamp()
+ {
+ return timeStamp;
+ }
+
+ public boolean hasCallerData()
+ {
+ boolean flag;
+ if(callerDataArray != null)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ public int hashCode()
+ {
+ int i = 0;
+ int j;
+ int k;
+ if(message == null)
+ j = 0;
+ else
+ j = message.hashCode();
+ k = 31 * (j + 31);
+ if(threadName != null)
+ i = threadName.hashCode();
+ return 31 * (k + i) + (int)(timeStamp ^ timeStamp >>> 32);
+ }
+
+ public void prepareForDeferredProcessing()
+ {
+ }
+
+ private static final int NULL_ARGUMENT_ARRAY = -1;
+ private static final String NULL_ARGUMENT_ARRAY_ELEMENT = "NULL_ARGUMENT_ARRAY_ELEMENT";
+ private static final long serialVersionUID = 0x5af38006fcec0a48L;
+ private transient Object argumentArray[];
+ private StackTraceElement callerDataArray[];
+ private transient String formattedMessage;
+ private transient Level level;
+ private LoggerContextVO loggerContextVO;
+ private String loggerName;
+ private Marker marker;
+ private Map mdcPropertyMap;
+ private String message;
+ private String threadName;
+ private ThrowableProxyVO throwableProxy;
+ private long timeStamp;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/PackagingDataCalculator.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/PackagingDataCalculator.java
new file mode 100644
index 0000000..f6589be
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/PackagingDataCalculator.java
@@ -0,0 +1,205 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.spi;
+
+import java.net.URL;
+import java.security.CodeSource;
+import java.security.ProtectionDomain;
+import java.util.HashMap;
+
+// Referenced classes of package ch.qos.logback.classic.spi:
+// StackTraceElementProxy, ClassPackagingData, IThrowableProxy, STEUtil
+
+public class PackagingDataCalculator
+{
+
+ public PackagingDataCalculator()
+ {
+ cache = new HashMap();
+ }
+
+ private Class bestEffortLoadClass(ClassLoader classloader, String s)
+ {
+ Class class1 = loadClass(classloader, s);
+ if(class1 == null) goto _L2; else goto _L1
+_L1:
+ return class1;
+_L2:
+ ClassLoader classloader1 = Thread.currentThread().getContextClassLoader();
+ if(classloader1 != classloader)
+ class1 = loadClass(classloader1, s);
+ if(class1 != null)
+ continue; /* Loop/switch isn't completed */
+ Class class2 = Class.forName(s);
+ class1 = class2;
+ continue; /* Loop/switch isn't completed */
+ ClassNotFoundException classnotfoundexception;
+ classnotfoundexception;
+ class1 = null;
+ continue; /* Loop/switch isn't completed */
+ NoClassDefFoundError noclassdeffounderror;
+ noclassdeffounderror;
+ class1 = null;
+ continue; /* Loop/switch isn't completed */
+ Exception exception;
+ exception;
+ exception.printStackTrace();
+ class1 = null;
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ private ClassPackagingData computeBySTEP(StackTraceElementProxy stacktraceelementproxy, ClassLoader classloader)
+ {
+ String s = stacktraceelementproxy.ste.getClassName();
+ ClassPackagingData classpackagingdata = (ClassPackagingData)cache.get(s);
+ if(classpackagingdata == null)
+ {
+ Class class1 = bestEffortLoadClass(classloader, s);
+ String s1 = getImplementationVersion(class1);
+ classpackagingdata = new ClassPackagingData(getCodeLocation(class1), s1, false);
+ cache.put(s, classpackagingdata);
+ }
+ return classpackagingdata;
+ }
+
+ private String getCodeLocation(String s, char c)
+ {
+ int i = s.lastIndexOf(c);
+ String s1;
+ if(isFolder(i, s))
+ s1 = s.substring(1 + s.lastIndexOf(c, i - 1));
+ else
+ if(i > 0)
+ s1 = s.substring(i + 1);
+ else
+ s1 = null;
+ return s1;
+ }
+
+ private boolean isFolder(int i, String s)
+ {
+ boolean flag;
+ if(i != -1 && i + 1 == s.length())
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ private Class loadClass(ClassLoader classloader, String s)
+ {
+ Class class1 = null;
+ if(classloader != null) goto _L2; else goto _L1
+_L1:
+ return class1;
+_L2:
+ Class class2 = classloader.loadClass(s);
+ class1 = class2;
+ continue; /* Loop/switch isn't completed */
+ Exception exception;
+ exception;
+ exception.printStackTrace();
+ continue; /* Loop/switch isn't completed */
+ ClassNotFoundException classnotfoundexception;
+ classnotfoundexception;
+ continue; /* Loop/switch isn't completed */
+ NoClassDefFoundError noclassdeffounderror;
+ noclassdeffounderror;
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ public void calculate(IThrowableProxy ithrowableproxy)
+ {
+ for(; ithrowableproxy != null; ithrowableproxy = ithrowableproxy.getCause())
+ {
+ populateFrames(ithrowableproxy.getStackTraceElementProxyArray());
+ IThrowableProxy aithrowableproxy[] = ithrowableproxy.getSuppressed();
+ if(aithrowableproxy == null)
+ continue;
+ int i = aithrowableproxy.length;
+ for(int j = 0; j < i; j++)
+ populateFrames(aithrowableproxy[j].getStackTraceElementProxyArray());
+
+ }
+
+ }
+
+ String getCodeLocation(Class class1)
+ {
+ if(class1 == null)
+ break MISSING_BLOCK_LABEL_70;
+ String s;
+ String s2;
+ CodeSource codesource = class1.getProtectionDomain().getCodeSource();
+ if(codesource == null)
+ break MISSING_BLOCK_LABEL_70;
+ URL url = codesource.getLocation();
+ if(url == null)
+ break MISSING_BLOCK_LABEL_70;
+ String s1 = url.toString();
+ s = getCodeLocation(s1, '/');
+ if(s != null)
+ break MISSING_BLOCK_LABEL_73;
+ s2 = getCodeLocation(s1, '\\');
+ s = s2;
+ break MISSING_BLOCK_LABEL_73;
+ Exception exception;
+ exception;
+ s = "na";
+ return s;
+ }
+
+ String getImplementationVersion(Class class1)
+ {
+ if(class1 != null) goto _L2; else goto _L1
+_L1:
+ String s = "na";
+_L4:
+ return s;
+_L2:
+ Package package1 = class1.getPackage();
+ if(package1 != null)
+ {
+ s = package1.getImplementationVersion();
+ if(s == null)
+ s = "na";
+ } else
+ {
+ s = "na";
+ }
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ void populateFrames(StackTraceElementProxy astacktraceelementproxy[])
+ {
+ int i = STEUtil.findNumberOfCommonFrames((new Throwable("local stack reference")).getStackTrace(), astacktraceelementproxy);
+ int j = astacktraceelementproxy.length - i;
+ for(int k = 0; k < i; k++)
+ {
+ StackTraceElementProxy stacktraceelementproxy = astacktraceelementproxy[j + k];
+ stacktraceelementproxy.setClassPackagingData(computeBySTEP(stacktraceelementproxy, null));
+ }
+
+ populateUncommonFrames(i, astacktraceelementproxy, null);
+ }
+
+ void populateUncommonFrames(int i, StackTraceElementProxy astacktraceelementproxy[], ClassLoader classloader)
+ {
+ int j = astacktraceelementproxy.length - i;
+ for(int k = 0; k < j; k++)
+ {
+ StackTraceElementProxy stacktraceelementproxy = astacktraceelementproxy[k];
+ stacktraceelementproxy.setClassPackagingData(computeBySTEP(stacktraceelementproxy, classloader));
+ }
+
+ }
+
+ static final StackTraceElementProxy STEP_ARRAY_TEMPLATE[] = new StackTraceElementProxy[0];
+ HashMap cache;
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/STEUtil.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/STEUtil.java
new file mode 100644
index 0000000..f822eb6
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/STEUtil.java
@@ -0,0 +1,34 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.spi;
+
+
+// Referenced classes of package ch.qos.logback.classic.spi:
+// StackTraceElementProxy
+
+public class STEUtil
+{
+
+ public STEUtil()
+ {
+ }
+
+ static int findNumberOfCommonFrames(StackTraceElement astacktraceelement[], StackTraceElementProxy astacktraceelementproxy[])
+ {
+ int i = 0;
+ if(astacktraceelementproxy != null)
+ {
+ int j = -1 + astacktraceelement.length;
+ int k = -1 + astacktraceelementproxy.length;
+ while(j >= 0 && k >= 0 && astacktraceelement[j].equals(astacktraceelementproxy[k].ste))
+ {
+ i++;
+ j--;
+ k--;
+ }
+ }
+ return i;
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/StackTraceElementProxy.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/StackTraceElementProxy.java
new file mode 100644
index 0000000..233f357
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/StackTraceElementProxy.java
@@ -0,0 +1,102 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.spi;
+
+import java.io.Serializable;
+
+// Referenced classes of package ch.qos.logback.classic.spi:
+// ClassPackagingData
+
+public class StackTraceElementProxy
+ implements Serializable
+{
+
+ public StackTraceElementProxy(StackTraceElement stacktraceelement)
+ {
+ if(stacktraceelement == null)
+ {
+ throw new IllegalArgumentException("ste cannot be null");
+ } else
+ {
+ ste = stacktraceelement;
+ return;
+ }
+ }
+
+ public boolean equals(Object obj)
+ {
+ boolean flag = true;
+ if(this != obj) goto _L2; else goto _L1
+_L1:
+ return flag;
+_L2:
+ if(obj == null)
+ flag = false;
+ else
+ if(getClass() != obj.getClass())
+ {
+ flag = false;
+ } else
+ {
+ StackTraceElementProxy stacktraceelementproxy = (StackTraceElementProxy)obj;
+ if(!ste.equals(stacktraceelementproxy.ste))
+ flag = false;
+ else
+ if(cpd == null)
+ {
+ if(stacktraceelementproxy.cpd != null)
+ flag = false;
+ } else
+ if(!cpd.equals(stacktraceelementproxy.cpd))
+ flag = false;
+ }
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ public ClassPackagingData getClassPackagingData()
+ {
+ return cpd;
+ }
+
+ public String getSTEAsString()
+ {
+ if(steAsString == null)
+ steAsString = (new StringBuilder()).append("at ").append(ste.toString()).toString();
+ return steAsString;
+ }
+
+ public StackTraceElement getStackTraceElement()
+ {
+ return ste;
+ }
+
+ public int hashCode()
+ {
+ return ste.hashCode();
+ }
+
+ public void setClassPackagingData(ClassPackagingData classpackagingdata)
+ {
+ if(cpd != null)
+ {
+ throw new IllegalStateException("Packaging data has been already set");
+ } else
+ {
+ cpd = classpackagingdata;
+ return;
+ }
+ }
+
+ public String toString()
+ {
+ return getSTEAsString();
+ }
+
+ private static final long serialVersionUID = 0xdf0c871511134332L;
+ private ClassPackagingData cpd;
+ final StackTraceElement ste;
+ private transient String steAsString;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/ThrowableProxy.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/ThrowableProxy.java
new file mode 100644
index 0000000..bc7964e
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/ThrowableProxy.java
@@ -0,0 +1,164 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.spi;
+
+import ch.qos.logback.core.CoreConstants;
+import java.io.PrintStream;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+// Referenced classes of package ch.qos.logback.classic.spi:
+// IThrowableProxy, ThrowableProxyUtil, PackagingDataCalculator, StackTraceElementProxy
+
+public class ThrowableProxy
+ implements IThrowableProxy
+{
+
+ public ThrowableProxy(Throwable throwable1)
+ {
+ int i;
+ i = 0;
+ super();
+ suppressed = NO_SUPPRESSED;
+ calculatedPackageData = false;
+ throwable = throwable1;
+ className = throwable1.getClass().getName();
+ message = throwable1.getMessage();
+ stackTraceElementProxyArray = ThrowableProxyUtil.steArrayToStepArray(throwable1.getStackTrace());
+ Throwable throwable2 = throwable1.getCause();
+ if(throwable2 != null)
+ {
+ cause = new ThrowableProxy(throwable2);
+ cause.commonFrames = ThrowableProxyUtil.findNumberOfCommonFrames(throwable2.getStackTrace(), stackTraceElementProxyArray);
+ }
+ if(GET_SUPPRESSED_METHOD == null)
+ break MISSING_BLOCK_LABEL_200;
+ Throwable athrowable[];
+ Object obj = GET_SUPPRESSED_METHOD.invoke(throwable1, new Object[0]);
+ if(!(obj instanceof Throwable[]))
+ break MISSING_BLOCK_LABEL_200;
+ athrowable = (Throwable[])(Throwable[])obj;
+ if(athrowable.length <= 0)
+ break MISSING_BLOCK_LABEL_200;
+ suppressed = new ThrowableProxy[athrowable.length];
+_L1:
+ if(i >= athrowable.length)
+ break MISSING_BLOCK_LABEL_200;
+ suppressed[i] = new ThrowableProxy(athrowable[i]);
+ suppressed[i].commonFrames = ThrowableProxyUtil.findNumberOfCommonFrames(athrowable[i].getStackTrace(), stackTraceElementProxyArray);
+ i++;
+ goto _L1
+ InvocationTargetException invocationtargetexception;
+ invocationtargetexception;
+_L3:
+ return;
+ IllegalAccessException illegalaccessexception;
+ illegalaccessexception;
+ if(true) goto _L3; else goto _L2
+_L2:
+ }
+
+ public void calculatePackagingData()
+ {
+ if(!calculatedPackageData) goto _L2; else goto _L1
+_L1:
+ return;
+_L2:
+ PackagingDataCalculator packagingdatacalculator = getPackagingDataCalculator();
+ if(packagingdatacalculator != null)
+ {
+ calculatedPackageData = true;
+ packagingdatacalculator.calculate(this);
+ }
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ public void fullDump()
+ {
+ StringBuilder stringbuilder = new StringBuilder();
+ StackTraceElementProxy astacktraceelementproxy[] = stackTraceElementProxyArray;
+ int i = astacktraceelementproxy.length;
+ for(int j = 0; j < i; j++)
+ {
+ StackTraceElementProxy stacktraceelementproxy = astacktraceelementproxy[j];
+ String s = stacktraceelementproxy.toString();
+ stringbuilder.append('\t').append(s);
+ ThrowableProxyUtil.subjoinPackagingData(stringbuilder, stacktraceelementproxy);
+ stringbuilder.append(CoreConstants.LINE_SEPARATOR);
+ }
+
+ System.out.println(stringbuilder.toString());
+ }
+
+ public IThrowableProxy getCause()
+ {
+ return cause;
+ }
+
+ public String getClassName()
+ {
+ return className;
+ }
+
+ public int getCommonFrames()
+ {
+ return commonFrames;
+ }
+
+ public String getMessage()
+ {
+ return message;
+ }
+
+ public PackagingDataCalculator getPackagingDataCalculator()
+ {
+ if(throwable != null && packagingDataCalculator == null)
+ packagingDataCalculator = new PackagingDataCalculator();
+ return packagingDataCalculator;
+ }
+
+ public StackTraceElementProxy[] getStackTraceElementProxyArray()
+ {
+ return stackTraceElementProxyArray;
+ }
+
+ public IThrowableProxy[] getSuppressed()
+ {
+ return suppressed;
+ }
+
+ public Throwable getThrowable()
+ {
+ return throwable;
+ }
+
+ private static final Method GET_SUPPRESSED_METHOD;
+ private static final ThrowableProxy NO_SUPPRESSED[];
+ private boolean calculatedPackageData;
+ private ThrowableProxy cause;
+ private String className;
+ int commonFrames;
+ private String message;
+ private transient PackagingDataCalculator packagingDataCalculator;
+ StackTraceElementProxy stackTraceElementProxyArray[];
+ private ThrowableProxy suppressed[];
+ private Throwable throwable;
+
+ static
+ {
+ Method method = null;
+ Method method1 = java/lang/Throwable.getMethod("getSuppressed", new Class[0]);
+ method = method1;
+_L2:
+ GET_SUPPRESSED_METHOD = method;
+ NO_SUPPRESSED = new ThrowableProxy[0];
+ return;
+ NoSuchMethodException nosuchmethodexception;
+ nosuchmethodexception;
+ if(true) goto _L2; else goto _L1
+_L1:
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/ThrowableProxyUtil.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/ThrowableProxyUtil.java
new file mode 100644
index 0000000..f21ad92
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/ThrowableProxyUtil.java
@@ -0,0 +1,176 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.spi;
+
+import ch.qos.logback.core.CoreConstants;
+
+// Referenced classes of package ch.qos.logback.classic.spi:
+// ThrowableProxy, StackTraceElementProxy, IThrowableProxy, ClassPackagingData
+
+public class ThrowableProxyUtil
+{
+
+ public ThrowableProxyUtil()
+ {
+ }
+
+ public static String asString(IThrowableProxy ithrowableproxy)
+ {
+ StringBuilder stringbuilder = new StringBuilder(2048);
+ recursiveAppend(stringbuilder, null, 1, ithrowableproxy);
+ return stringbuilder.toString();
+ }
+
+ public static void build(ThrowableProxy throwableproxy, Throwable throwable, ThrowableProxy throwableproxy1)
+ {
+ StackTraceElement astacktraceelement[] = throwable.getStackTrace();
+ int i = -1;
+ if(throwableproxy1 != null)
+ i = findNumberOfCommonFrames(astacktraceelement, throwableproxy1.getStackTraceElementProxyArray());
+ throwableproxy.commonFrames = i;
+ throwableproxy.stackTraceElementProxyArray = steArrayToStepArray(astacktraceelement);
+ }
+
+ static int findNumberOfCommonFrames(StackTraceElement astacktraceelement[], StackTraceElementProxy astacktraceelementproxy[])
+ {
+ int i = 0;
+ if(astacktraceelementproxy != null && astacktraceelement != null)
+ {
+ int j = -1 + astacktraceelement.length;
+ int k = -1 + astacktraceelementproxy.length;
+ while(j >= 0 && k >= 0 && astacktraceelement[j].equals(astacktraceelementproxy[k].ste))
+ {
+ i++;
+ j--;
+ k--;
+ }
+ }
+ return i;
+ }
+
+ public static void indent(StringBuilder stringbuilder, int i)
+ {
+ for(int j = 0; j < i; j++)
+ stringbuilder.append('\t');
+
+ }
+
+ private static void recursiveAppend(StringBuilder stringbuilder, String s, int i, IThrowableProxy ithrowableproxy)
+ {
+ if(ithrowableproxy != null)
+ {
+ subjoinFirstLine(stringbuilder, s, i, ithrowableproxy);
+ stringbuilder.append(CoreConstants.LINE_SEPARATOR);
+ subjoinSTEPArray(stringbuilder, i, ithrowableproxy);
+ IThrowableProxy aithrowableproxy[] = ithrowableproxy.getSuppressed();
+ if(aithrowableproxy != null)
+ {
+ int j = aithrowableproxy.length;
+ for(int k = 0; k < j; k++)
+ {
+ IThrowableProxy ithrowableproxy1 = aithrowableproxy[k];
+ recursiveAppend(stringbuilder, "Suppressed: ", i + 1, ithrowableproxy1);
+ }
+
+ }
+ recursiveAppend(stringbuilder, "Caused by: ", i, ithrowableproxy.getCause());
+ }
+ }
+
+ static StackTraceElementProxy[] steArrayToStepArray(StackTraceElement astacktraceelement[])
+ {
+ int i = 0;
+ StackTraceElementProxy astacktraceelementproxy1[];
+ if(astacktraceelement == null)
+ {
+ astacktraceelementproxy1 = new StackTraceElementProxy[0];
+ } else
+ {
+ StackTraceElementProxy astacktraceelementproxy[];
+ for(astacktraceelementproxy = new StackTraceElementProxy[astacktraceelement.length]; i < astacktraceelementproxy.length; i++)
+ astacktraceelementproxy[i] = new StackTraceElementProxy(astacktraceelement[i]);
+
+ astacktraceelementproxy1 = astacktraceelementproxy;
+ }
+ return astacktraceelementproxy1;
+ }
+
+ private static void subjoinExceptionMessage(StringBuilder stringbuilder, IThrowableProxy ithrowableproxy)
+ {
+ stringbuilder.append(ithrowableproxy.getClassName()).append(": ").append(ithrowableproxy.getMessage());
+ }
+
+ public static void subjoinFirstLine(StringBuilder stringbuilder, IThrowableProxy ithrowableproxy)
+ {
+ if(ithrowableproxy.getCommonFrames() > 0)
+ stringbuilder.append("Caused by: ");
+ subjoinExceptionMessage(stringbuilder, ithrowableproxy);
+ }
+
+ private static void subjoinFirstLine(StringBuilder stringbuilder, String s, int i, IThrowableProxy ithrowableproxy)
+ {
+ indent(stringbuilder, i - 1);
+ if(s != null)
+ stringbuilder.append(s);
+ subjoinExceptionMessage(stringbuilder, ithrowableproxy);
+ }
+
+ public static void subjoinFirstLineRootCauseFirst(StringBuilder stringbuilder, IThrowableProxy ithrowableproxy)
+ {
+ if(ithrowableproxy.getCause() != null)
+ stringbuilder.append("Wrapped by: ");
+ subjoinExceptionMessage(stringbuilder, ithrowableproxy);
+ }
+
+ public static void subjoinPackagingData(StringBuilder stringbuilder, StackTraceElementProxy stacktraceelementproxy)
+ {
+ if(stacktraceelementproxy != null)
+ {
+ ClassPackagingData classpackagingdata = stacktraceelementproxy.getClassPackagingData();
+ if(classpackagingdata != null)
+ {
+ if(!classpackagingdata.isExact())
+ stringbuilder.append(" ~[");
+ else
+ stringbuilder.append(" [");
+ stringbuilder.append(classpackagingdata.getCodeLocation()).append(':').append(classpackagingdata.getVersion()).append(']');
+ }
+ }
+ }
+
+ public static void subjoinSTEP(StringBuilder stringbuilder, StackTraceElementProxy stacktraceelementproxy)
+ {
+ stringbuilder.append(stacktraceelementproxy.toString());
+ subjoinPackagingData(stringbuilder, stacktraceelementproxy);
+ }
+
+ public static void subjoinSTEPArray(StringBuilder stringbuilder, int i, IThrowableProxy ithrowableproxy)
+ {
+ StackTraceElementProxy astacktraceelementproxy[] = ithrowableproxy.getStackTraceElementProxyArray();
+ int j = ithrowableproxy.getCommonFrames();
+ for(int k = 0; k < astacktraceelementproxy.length - j; k++)
+ {
+ StackTraceElementProxy stacktraceelementproxy = astacktraceelementproxy[k];
+ indent(stringbuilder, i);
+ subjoinSTEP(stringbuilder, stacktraceelementproxy);
+ stringbuilder.append(CoreConstants.LINE_SEPARATOR);
+ }
+
+ if(j > 0)
+ {
+ indent(stringbuilder, i);
+ stringbuilder.append("... ").append(j).append(" common frames omitted").append(CoreConstants.LINE_SEPARATOR);
+ }
+ }
+
+ public static void subjoinSTEPArray(StringBuilder stringbuilder, IThrowableProxy ithrowableproxy)
+ {
+ subjoinSTEPArray(stringbuilder, 1, ithrowableproxy);
+ }
+
+ private static final int BUILDER_CAPACITY = 2048;
+ public static final int REGULAR_EXCEPTION_INDENT = 1;
+ public static final int SUPPRESSED_EXCEPTION_INDENT = 1;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/ThrowableProxyVO.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/ThrowableProxyVO.java
new file mode 100644
index 0000000..e4561c6
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/ThrowableProxyVO.java
@@ -0,0 +1,145 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.spi;
+
+import java.io.Serializable;
+import java.util.Arrays;
+
+// Referenced classes of package ch.qos.logback.classic.spi:
+// IThrowableProxy, StackTraceElementProxy
+
+public class ThrowableProxyVO
+ implements IThrowableProxy, Serializable
+{
+
+ public ThrowableProxyVO()
+ {
+ }
+
+ public static ThrowableProxyVO build(IThrowableProxy ithrowableproxy)
+ {
+ ThrowableProxyVO throwableproxyvo1;
+ if(ithrowableproxy == null)
+ {
+ throwableproxyvo1 = null;
+ } else
+ {
+ ThrowableProxyVO throwableproxyvo = new ThrowableProxyVO();
+ throwableproxyvo.className = ithrowableproxy.getClassName();
+ throwableproxyvo.message = ithrowableproxy.getMessage();
+ throwableproxyvo.commonFramesCount = ithrowableproxy.getCommonFrames();
+ throwableproxyvo.stackTraceElementProxyArray = ithrowableproxy.getStackTraceElementProxyArray();
+ IThrowableProxy ithrowableproxy1 = ithrowableproxy.getCause();
+ if(ithrowableproxy1 != null)
+ throwableproxyvo.cause = build(ithrowableproxy1);
+ IThrowableProxy aithrowableproxy[] = ithrowableproxy.getSuppressed();
+ if(aithrowableproxy != null)
+ {
+ throwableproxyvo.suppressed = new IThrowableProxy[aithrowableproxy.length];
+ for(int i = 0; i < aithrowableproxy.length; i++)
+ throwableproxyvo.suppressed[i] = build(aithrowableproxy[i]);
+
+ }
+ throwableproxyvo1 = throwableproxyvo;
+ }
+ return throwableproxyvo1;
+ }
+
+ public boolean equals(Object obj)
+ {
+ boolean flag = true;
+ if(this != obj) goto _L2; else goto _L1
+_L1:
+ return flag;
+_L2:
+ if(obj == null)
+ {
+ flag = false;
+ continue; /* Loop/switch isn't completed */
+ }
+ if(getClass() != obj.getClass())
+ {
+ flag = false;
+ continue; /* Loop/switch isn't completed */
+ }
+ ThrowableProxyVO throwableproxyvo = (ThrowableProxyVO)obj;
+ if(className == null)
+ {
+ if(throwableproxyvo.className != null)
+ {
+ flag = false;
+ continue; /* Loop/switch isn't completed */
+ }
+ } else
+ if(!className.equals(throwableproxyvo.className))
+ {
+ flag = false;
+ continue; /* Loop/switch isn't completed */
+ }
+ if(!Arrays.equals(stackTraceElementProxyArray, throwableproxyvo.stackTraceElementProxyArray))
+ flag = false;
+ else
+ if(!Arrays.equals(suppressed, throwableproxyvo.suppressed))
+ flag = false;
+ else
+ if(cause == null)
+ {
+ if(throwableproxyvo.cause != null)
+ flag = false;
+ } else
+ if(!cause.equals(throwableproxyvo.cause))
+ flag = false;
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ public IThrowableProxy getCause()
+ {
+ return cause;
+ }
+
+ public String getClassName()
+ {
+ return className;
+ }
+
+ public int getCommonFrames()
+ {
+ return commonFramesCount;
+ }
+
+ public String getMessage()
+ {
+ return message;
+ }
+
+ public StackTraceElementProxy[] getStackTraceElementProxyArray()
+ {
+ return stackTraceElementProxyArray;
+ }
+
+ public IThrowableProxy[] getSuppressed()
+ {
+ return suppressed;
+ }
+
+ public int hashCode()
+ {
+ int i;
+ if(className == null)
+ i = 0;
+ else
+ i = className.hashCode();
+ return i + 31;
+ }
+
+ private static final long serialVersionUID = 0xf54432135b2763ddL;
+ private IThrowableProxy cause;
+ private String className;
+ private int commonFramesCount;
+ private String message;
+ private StackTraceElementProxy stackTraceElementProxyArray[];
+ private IThrowableProxy suppressed[];
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/TurboFilterList.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/TurboFilterList.java
new file mode 100644
index 0000000..9ee8e82
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/spi/TurboFilterList.java
@@ -0,0 +1,55 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.spi;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.Logger;
+import ch.qos.logback.classic.turbo.TurboFilter;
+import ch.qos.logback.core.spi.FilterReply;
+import java.util.concurrent.CopyOnWriteArrayList;
+import org.slf4j.Marker;
+
+public final class TurboFilterList extends CopyOnWriteArrayList
+{
+
+ public TurboFilterList()
+ {
+ }
+
+ public FilterReply getTurboFilterChainDecision(Marker marker, Logger logger, Level level, String s, Object aobj[], Throwable throwable)
+ {
+ if(size() != 1) goto _L2; else goto _L1
+_L1:
+ FilterReply filterreply;
+ FilterReply filterreply1;
+ try
+ {
+ filterreply1 = ((TurboFilter)get(0)).decide(marker, logger, level, s, aobj, throwable);
+ }
+ catch(IndexOutOfBoundsException indexoutofboundsexception)
+ {
+ filterreply = FilterReply.NEUTRAL;
+ continue; /* Loop/switch isn't completed */
+ }
+ filterreply = filterreply1;
+_L4:
+ return filterreply;
+_L2:
+ Object aobj1[] = toArray();
+ int i = aobj1.length;
+ for(int j = 0; j < i; j++)
+ {
+ filterreply = ((TurboFilter)aobj1[j]).decide(marker, logger, level, s, aobj, throwable);
+ if(filterreply == FilterReply.DENY || filterreply == FilterReply.ACCEPT)
+ continue; /* Loop/switch isn't completed */
+ }
+
+ filterreply = FilterReply.NEUTRAL;
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ private static final long serialVersionUID = 1L;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/turbo/DuplicateMessageFilter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/turbo/DuplicateMessageFilter.java
new file mode 100644
index 0000000..614cbe0
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/turbo/DuplicateMessageFilter.java
@@ -0,0 +1,72 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.turbo;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.Logger;
+import ch.qos.logback.core.spi.FilterReply;
+import org.slf4j.Marker;
+
+// Referenced classes of package ch.qos.logback.classic.turbo:
+// TurboFilter, LRUMessageCache
+
+public class DuplicateMessageFilter extends TurboFilter
+{
+
+ public DuplicateMessageFilter()
+ {
+ allowedRepetitions = 5;
+ cacheSize = 100;
+ }
+
+ public FilterReply decide(Marker marker, Logger logger, Level level, String s, Object aobj[], Throwable throwable)
+ {
+ FilterReply filterreply;
+ if(msgCache.getMessageCountAndThenIncrement(s) <= allowedRepetitions)
+ filterreply = FilterReply.NEUTRAL;
+ else
+ filterreply = FilterReply.DENY;
+ return filterreply;
+ }
+
+ public int getAllowedRepetitions()
+ {
+ return allowedRepetitions;
+ }
+
+ public int getCacheSize()
+ {
+ return cacheSize;
+ }
+
+ public void setAllowedRepetitions(int i)
+ {
+ allowedRepetitions = i;
+ }
+
+ public void setCacheSize(int i)
+ {
+ cacheSize = i;
+ }
+
+ public void start()
+ {
+ msgCache = new LRUMessageCache(cacheSize);
+ super.start();
+ }
+
+ public void stop()
+ {
+ msgCache.clear();
+ msgCache = null;
+ super.stop();
+ }
+
+ public static final int DEFAULT_ALLOWED_REPETITIONS = 5;
+ public static final int DEFAULT_CACHE_SIZE = 100;
+ public int allowedRepetitions;
+ public int cacheSize;
+ private LRUMessageCache msgCache;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/turbo/DynamicThresholdFilter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/turbo/DynamicThresholdFilter.java
new file mode 100644
index 0000000..16caebd
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/turbo/DynamicThresholdFilter.java
@@ -0,0 +1,111 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.turbo;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.Logger;
+import ch.qos.logback.core.spi.FilterReply;
+import java.util.HashMap;
+import java.util.Map;
+import org.slf4j.MDC;
+import org.slf4j.Marker;
+
+// Referenced classes of package ch.qos.logback.classic.turbo:
+// TurboFilter, MDCValueLevelPair
+
+public class DynamicThresholdFilter extends TurboFilter
+{
+
+ public DynamicThresholdFilter()
+ {
+ valueLevelMap = new HashMap();
+ defaultThreshold = Level.ERROR;
+ onHigherOrEqual = FilterReply.NEUTRAL;
+ onLower = FilterReply.DENY;
+ }
+
+ public void addMDCValueLevelPair(MDCValueLevelPair mdcvaluelevelpair)
+ {
+ if(valueLevelMap.containsKey(mdcvaluelevelpair.getValue()))
+ addError((new StringBuilder()).append(mdcvaluelevelpair.getValue()).append(" has been already set").toString());
+ else
+ valueLevelMap.put(mdcvaluelevelpair.getValue(), mdcvaluelevelpair.getLevel());
+ }
+
+ public FilterReply decide(Marker marker, Logger logger, Level level, String s, Object aobj[], Throwable throwable)
+ {
+ String s1 = MDC.get(key);
+ FilterReply filterreply;
+ if(!isStarted())
+ {
+ filterreply = FilterReply.NEUTRAL;
+ } else
+ {
+ Level level1 = null;
+ if(s1 != null)
+ level1 = (Level)valueLevelMap.get(s1);
+ if(level1 == null)
+ level1 = defaultThreshold;
+ if(level.isGreaterOrEqual(level1))
+ filterreply = onHigherOrEqual;
+ else
+ filterreply = onLower;
+ }
+ return filterreply;
+ }
+
+ public Level getDefaultThreshold()
+ {
+ return defaultThreshold;
+ }
+
+ public String getKey()
+ {
+ return key;
+ }
+
+ public FilterReply getOnHigherOrEqual()
+ {
+ return onHigherOrEqual;
+ }
+
+ public FilterReply getOnLower()
+ {
+ return onLower;
+ }
+
+ public void setDefaultThreshold(Level level)
+ {
+ defaultThreshold = level;
+ }
+
+ public void setKey(String s)
+ {
+ key = s;
+ }
+
+ public void setOnHigherOrEqual(FilterReply filterreply)
+ {
+ onHigherOrEqual = filterreply;
+ }
+
+ public void setOnLower(FilterReply filterreply)
+ {
+ onLower = filterreply;
+ }
+
+ public void start()
+ {
+ if(key == null)
+ addError("No key name was specified");
+ super.start();
+ }
+
+ private Level defaultThreshold;
+ private String key;
+ private FilterReply onHigherOrEqual;
+ private FilterReply onLower;
+ private Map valueLevelMap;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/turbo/LRUMessageCache.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/turbo/LRUMessageCache.java
new file mode 100644
index 0000000..14176e4
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/turbo/LRUMessageCache.java
@@ -0,0 +1,84 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.turbo;
+
+import java.util.LinkedHashMap;
+
+class LRUMessageCache extends LinkedHashMap
+{
+
+ LRUMessageCache(int i)
+ {
+ super((int)(1.333333F * (float)i), 0.75F, true);
+ if(i < 1)
+ {
+ throw new IllegalArgumentException("Cache size cannot be smaller than 1");
+ } else
+ {
+ cacheSize = i;
+ return;
+ }
+ }
+
+ /**
+ * @deprecated Method clear is deprecated
+ */
+
+ public void clear()
+ {
+ this;
+ JVM INSTR monitorenter ;
+ super.clear();
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ int getMessageCountAndThenIncrement(String s)
+ {
+ int i = 0;
+ if(s != null) goto _L2; else goto _L1
+_L1:
+ return i;
+_L2:
+ this;
+ JVM INSTR monitorenter ;
+ Integer integer;
+ Integer integer1;
+ integer = (Integer)super.get(s);
+ if(integer != null)
+ break MISSING_BLOCK_LABEL_50;
+ integer1 = Integer.valueOf(0);
+_L3:
+ super.put(s, integer1);
+ this;
+ JVM INSTR monitorexit ;
+ i = integer1.intValue();
+ continue; /* Loop/switch isn't completed */
+ integer1 = Integer.valueOf(1 + integer.intValue());
+ goto _L3
+ Exception exception;
+ exception;
+ throw exception;
+ if(true) goto _L1; else goto _L4
+_L4:
+ }
+
+ protected boolean removeEldestEntry(java.util.Map.Entry entry)
+ {
+ boolean flag;
+ if(size() > cacheSize)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ private static final long serialVersionUID = 1L;
+ final int cacheSize;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/turbo/MDCFilter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/turbo/MDCFilter.java
new file mode 100644
index 0000000..6617c0e
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/turbo/MDCFilter.java
@@ -0,0 +1,52 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.turbo;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.Logger;
+import ch.qos.logback.core.spi.FilterReply;
+import org.slf4j.MDC;
+import org.slf4j.Marker;
+
+// Referenced classes of package ch.qos.logback.classic.turbo:
+// MatchingFilter
+
+public class MDCFilter extends MatchingFilter
+{
+
+ public MDCFilter()
+ {
+ }
+
+ public FilterReply decide(Marker marker, Logger logger, Level level, String s, Object aobj[], Throwable throwable)
+ {
+ FilterReply filterreply;
+ if(MDCKey == null)
+ {
+ filterreply = FilterReply.NEUTRAL;
+ } else
+ {
+ String s1 = MDC.get(MDCKey);
+ if(value.equals(s1))
+ filterreply = onMatch;
+ else
+ filterreply = onMismatch;
+ }
+ return filterreply;
+ }
+
+ public void setMDCKey(String s)
+ {
+ MDCKey = s;
+ }
+
+ public void setValue(String s)
+ {
+ value = s;
+ }
+
+ String MDCKey;
+ String value;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/turbo/MDCValueLevelPair.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/turbo/MDCValueLevelPair.java
new file mode 100644
index 0000000..7a4ea37
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/turbo/MDCValueLevelPair.java
@@ -0,0 +1,38 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.turbo;
+
+import ch.qos.logback.classic.Level;
+
+public class MDCValueLevelPair
+{
+
+ public MDCValueLevelPair()
+ {
+ }
+
+ public Level getLevel()
+ {
+ return level;
+ }
+
+ public String getValue()
+ {
+ return value;
+ }
+
+ public void setLevel(Level level1)
+ {
+ level = level1;
+ }
+
+ public void setValue(String s)
+ {
+ value = s;
+ }
+
+ private Level level;
+ private String value;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/turbo/MarkerFilter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/turbo/MarkerFilter.java
new file mode 100644
index 0000000..4d1fced
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/turbo/MarkerFilter.java
@@ -0,0 +1,54 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.turbo;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.Logger;
+import ch.qos.logback.core.spi.FilterReply;
+import org.slf4j.Marker;
+import org.slf4j.MarkerFactory;
+
+// Referenced classes of package ch.qos.logback.classic.turbo:
+// MatchingFilter
+
+public class MarkerFilter extends MatchingFilter
+{
+
+ public MarkerFilter()
+ {
+ }
+
+ public FilterReply decide(Marker marker, Logger logger, Level level, String s, Object aobj[], Throwable throwable)
+ {
+ FilterReply filterreply;
+ if(!isStarted())
+ filterreply = FilterReply.NEUTRAL;
+ else
+ if(marker == null)
+ filterreply = onMismatch;
+ else
+ if(marker.contains(markerToMatch))
+ filterreply = onMatch;
+ else
+ filterreply = onMismatch;
+ return filterreply;
+ }
+
+ public void setMarker(String s)
+ {
+ if(s != null)
+ markerToMatch = MarkerFactory.getMarker(s);
+ }
+
+ public void start()
+ {
+ if(markerToMatch != null)
+ super.start();
+ else
+ addError((new StringBuilder()).append("The marker property must be set for [").append(getName()).append("]").toString());
+ }
+
+ Marker markerToMatch;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/turbo/MatchingFilter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/turbo/MatchingFilter.java
new file mode 100644
index 0000000..f2a299f
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/turbo/MatchingFilter.java
@@ -0,0 +1,57 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.turbo;
+
+import ch.qos.logback.core.spi.FilterReply;
+
+// Referenced classes of package ch.qos.logback.classic.turbo:
+// TurboFilter
+
+public abstract class MatchingFilter extends TurboFilter
+{
+
+ public MatchingFilter()
+ {
+ onMatch = FilterReply.NEUTRAL;
+ onMismatch = FilterReply.NEUTRAL;
+ }
+
+ public final void setOnMatch(String s)
+ {
+ if(!"NEUTRAL".equals(s)) goto _L2; else goto _L1
+_L1:
+ onMatch = FilterReply.NEUTRAL;
+_L4:
+ return;
+_L2:
+ if("ACCEPT".equals(s))
+ onMatch = FilterReply.ACCEPT;
+ else
+ if("DENY".equals(s))
+ onMatch = FilterReply.DENY;
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ public final void setOnMismatch(String s)
+ {
+ if(!"NEUTRAL".equals(s)) goto _L2; else goto _L1
+_L1:
+ onMismatch = FilterReply.NEUTRAL;
+_L4:
+ return;
+_L2:
+ if("ACCEPT".equals(s))
+ onMismatch = FilterReply.ACCEPT;
+ else
+ if("DENY".equals(s))
+ onMismatch = FilterReply.DENY;
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ protected FilterReply onMatch;
+ protected FilterReply onMismatch;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/turbo/ReconfigureOnChangeFilter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/turbo/ReconfigureOnChangeFilter.java
new file mode 100644
index 0000000..e26e6db
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/turbo/ReconfigureOnChangeFilter.java
@@ -0,0 +1,257 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.turbo;
+
+import ch.qos.logback.classic.*;
+import ch.qos.logback.classic.joran.JoranConfigurator;
+import ch.qos.logback.core.Context;
+import ch.qos.logback.core.joran.spi.ConfigurationWatchList;
+import ch.qos.logback.core.joran.spi.JoranException;
+import ch.qos.logback.core.joran.util.ConfigurationWatchListUtil;
+import ch.qos.logback.core.spi.FilterReply;
+import ch.qos.logback.core.status.StatusUtil;
+import java.net.URL;
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import org.slf4j.Marker;
+
+// Referenced classes of package ch.qos.logback.classic.turbo:
+// TurboFilter
+
+public class ReconfigureOnChangeFilter extends TurboFilter
+{
+ class ReconfiguringThread
+ implements Runnable
+ {
+
+ private void fallbackConfiguration(LoggerContext loggercontext, List list, URL url)
+ {
+ JoranConfigurator joranconfigurator;
+ joranconfigurator = new JoranConfigurator();
+ joranconfigurator.setContext(doConfigure);
+ if(list == null)
+ break MISSING_BLOCK_LABEL_86;
+ addWarn("Falling back to previously registered safe configuration.");
+ loggercontext.reset();
+ JoranConfigurator.informContextOfURLUsedForConfiguration(doConfigure, url);
+ joranconfigurator.doConfigure(list);
+ addInfo("Re-registering previous fallback configuration once more as a fallback configuration point");
+ joranconfigurator.registerSafeConfiguration();
+_L1:
+ return;
+ JoranException joranexception;
+ joranexception;
+ addError("Unexpected exception thrown by a configuration considered safe.", joranexception);
+ goto _L1
+ addWarn("No previous configuration to fall back on.");
+ goto _L1
+ }
+
+ private void performXMLConfiguration(LoggerContext loggercontext)
+ {
+ JoranConfigurator joranconfigurator;
+ StatusUtil statusutil;
+ List list;
+ URL url;
+ long l;
+ joranconfigurator = new JoranConfigurator();
+ joranconfigurator.setContext(doConfigure);
+ statusutil = new StatusUtil(doConfigure);
+ list = joranconfigurator.recallSafeConfiguration();
+ url = ConfigurationWatchListUtil.getMainWatchURL(doConfigure);
+ loggercontext.reset();
+ l = System.currentTimeMillis();
+ joranconfigurator.doConfigure(mainConfigurationURL);
+ if(statusutil.hasXMLParsingErrors(l))
+ fallbackConfiguration(loggercontext, list, url);
+_L1:
+ return;
+ JoranException joranexception;
+ joranexception;
+ fallbackConfiguration(loggercontext, list, url);
+ goto _L1
+ }
+
+ public void run()
+ {
+ if(mainConfigurationURL != null) goto _L2; else goto _L1
+_L1:
+ addInfo("Due to missing top level configuration file, skipping reconfiguration");
+_L4:
+ return;
+_L2:
+ LoggerContext loggercontext = (LoggerContext)doConfigure;
+ addInfo((new StringBuilder()).append("Will reset and reconfigure context named [").append(doConfigure.getName()).append("]").toString());
+ if(mainConfigurationURL.toString().endsWith("xml"))
+ performXMLConfiguration(loggercontext);
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ final ReconfigureOnChangeFilter this$0;
+
+ ReconfiguringThread()
+ {
+ this$0 = ReconfigureOnChangeFilter.this;
+ super();
+ }
+ }
+
+
+ public ReconfigureOnChangeFilter()
+ {
+ refreshPeriod = 60000L;
+ invocationCounter = 0L;
+ mask = 15L;
+ lastMaskCheck = System.currentTimeMillis();
+ }
+
+ private void updateMaskIfNecessary(long l)
+ {
+ long l1;
+ l1 = l - lastMaskCheck;
+ lastMaskCheck = l;
+ if(l1 >= 100L || mask >= 65535L) goto _L2; else goto _L1
+_L1:
+ mask = 1L | mask << 1;
+_L4:
+ return;
+_L2:
+ if(l1 > 800L)
+ mask = mask >>> 2;
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ protected boolean changeDetected(long l)
+ {
+ boolean flag;
+ if(l >= nextCheck)
+ {
+ updateNextCheck(l);
+ flag = configurationWatchList.changeDetected();
+ } else
+ {
+ flag = false;
+ }
+ return flag;
+ }
+
+ public FilterReply decide(Marker marker, Logger logger, Level level, String s, Object aobj[], Throwable throwable)
+ {
+ FilterReply filterreply;
+ if(!isStarted())
+ {
+ filterreply = FilterReply.NEUTRAL;
+ } else
+ {
+ long l = invocationCounter;
+ invocationCounter = 1L + l;
+ if((l & mask) != mask)
+ {
+ filterreply = FilterReply.NEUTRAL;
+ } else
+ {
+ long l1 = System.currentTimeMillis();
+ synchronized(configurationWatchList)
+ {
+ updateMaskIfNecessary(l1);
+ if(changeDetected(l1))
+ {
+ disableSubsequentReconfiguration();
+ detachReconfigurationToNewThread();
+ }
+ }
+ filterreply = FilterReply.NEUTRAL;
+ }
+ }
+ return filterreply;
+ exception;
+ configurationwatchlist;
+ JVM INSTR monitorexit ;
+ throw exception;
+ }
+
+ void detachReconfigurationToNewThread()
+ {
+ addInfo((new StringBuilder()).append("Detected change in [").append(configurationWatchList.getCopyOfFileWatchList()).append("]").toString());
+ context.getExecutorService().submit(new ReconfiguringThread());
+ }
+
+ void disableSubsequentReconfiguration()
+ {
+ nextCheck = 0x7fffffffffffffffL;
+ }
+
+ public long getRefreshPeriod()
+ {
+ return refreshPeriod;
+ }
+
+ public void setRefreshPeriod(long l)
+ {
+ refreshPeriod = l;
+ }
+
+ public void start()
+ {
+ configurationWatchList = ConfigurationWatchListUtil.getConfigurationWatchList(context);
+ if(configurationWatchList != null)
+ {
+ mainConfigurationURL = configurationWatchList.getMainURL();
+ if(mainConfigurationURL == null)
+ {
+ addWarn("Due to missing top level configuration file, automatic reconfiguration is impossible.");
+ } else
+ {
+ List list = configurationWatchList.getCopyOfFileWatchList();
+ long l = refreshPeriod / 1000L;
+ addInfo((new StringBuilder()).append("Will scan for changes in [").append(list).append("] every ").append(l).append(" seconds. ").toString());
+ synchronized(configurationWatchList)
+ {
+ updateNextCheck(System.currentTimeMillis());
+ }
+ super.start();
+ }
+ } else
+ {
+ addWarn("Empty ConfigurationWatchList in context");
+ }
+ return;
+ exception;
+ configurationwatchlist;
+ JVM INSTR monitorexit ;
+ throw exception;
+ }
+
+ public String toString()
+ {
+ return (new StringBuilder()).append("ReconfigureOnChangeFilter{invocationCounter=").append(invocationCounter).append('}').toString();
+ }
+
+ void updateNextCheck(long l)
+ {
+ nextCheck = l + refreshPeriod;
+ }
+
+ public static final long DEFAULT_REFRESH_PERIOD = 60000L;
+ private static final long MASK_DECREASE_THRESHOLD = 800L;
+ private static final long MASK_INCREASE_THRESHOLD = 100L;
+ private static final int MAX_MASK = 65535;
+ ConfigurationWatchList configurationWatchList;
+ private long invocationCounter;
+ private volatile long lastMaskCheck;
+ URL mainConfigurationURL;
+ private volatile long mask;
+ protected volatile long nextCheck;
+ long refreshPeriod;
+
+
+
+
+
+
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/turbo/TurboFilter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/turbo/TurboFilter.java
new file mode 100644
index 0000000..02889f1
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/turbo/TurboFilter.java
@@ -0,0 +1,50 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.turbo;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.Logger;
+import ch.qos.logback.core.spi.*;
+import org.slf4j.Marker;
+
+public abstract class TurboFilter extends ContextAwareBase
+ implements LifeCycle
+{
+
+ public TurboFilter()
+ {
+ start = false;
+ }
+
+ public abstract FilterReply decide(Marker marker, Logger logger, Level level, String s, Object aobj[], Throwable throwable);
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public boolean isStarted()
+ {
+ return start;
+ }
+
+ public void setName(String s)
+ {
+ name = s;
+ }
+
+ public void start()
+ {
+ start = true;
+ }
+
+ public void stop()
+ {
+ start = false;
+ }
+
+ private String name;
+ boolean start;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/util/ContextInitializer.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/util/ContextInitializer.java
new file mode 100644
index 0000000..0d95866
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/util/ContextInitializer.java
@@ -0,0 +1,157 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.util;
+
+import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.classic.joran.JoranConfigurator;
+import ch.qos.logback.core.android.CommonPathUtil;
+import ch.qos.logback.core.joran.spi.JoranException;
+import ch.qos.logback.core.status.InfoStatus;
+import ch.qos.logback.core.status.StatusManager;
+import ch.qos.logback.core.util.Loader;
+import ch.qos.logback.core.util.OptionHelper;
+import java.io.File;
+import java.io.InputStream;
+import java.net.*;
+
+// Referenced classes of package ch.qos.logback.classic.util:
+// StatusListenerConfigHelper
+
+public class ContextInitializer
+{
+
+ public ContextInitializer(LoggerContext loggercontext)
+ {
+ loggerContext = loggercontext;
+ }
+
+ private URL findConfigFileFromSystemProperties(boolean flag)
+ {
+ String s;
+ String s1;
+ s = null;
+ s1 = OptionHelper.getSystemProperty("logback.configurationFile");
+ if(s1 == null) goto _L2; else goto _L1
+_L1:
+ File file = new File(s1);
+ if(!file.exists() || !file.isFile()) goto _L4; else goto _L3
+_L3:
+ URL url2;
+ if(flag)
+ statusOnResourceSearch(s1, classLoader, s1);
+ url2 = file.toURI().toURL();
+ URL url = url2;
+_L8:
+ if(flag)
+ {
+ ClassLoader classloader3 = classLoader;
+ if(url != null)
+ s = url.toString();
+ statusOnResourceSearch(s1, classloader3, s);
+ }
+_L6:
+ return url;
+_L4:
+ url = new URL(s1);
+ continue; /* Loop/switch isn't completed */
+ MalformedURLException malformedurlexception;
+ malformedurlexception;
+ URL url1 = Loader.getResource(s1, classLoader);
+ url = url1;
+ if(url != null)
+ {
+ if(flag)
+ {
+ ClassLoader classloader2 = classLoader;
+ if(url != null)
+ s = url.toString();
+ statusOnResourceSearch(s1, classloader2, s);
+ }
+ continue; /* Loop/switch isn't completed */
+ }
+ if(flag)
+ {
+ ClassLoader classloader1 = classLoader;
+ String s2;
+ if(url != null)
+ s2 = url.toString();
+ else
+ s2 = null;
+ statusOnResourceSearch(s1, classloader1, s2);
+ }
+_L2:
+ url = null;
+ if(true) goto _L6; else goto _L5
+_L5:
+ Exception exception;
+ exception;
+ if(flag)
+ {
+ ClassLoader classloader = classLoader;
+ if(false)
+ s = null.toString();
+ statusOnResourceSearch(s1, classloader, s);
+ }
+ throw exception;
+ if(true) goto _L8; else goto _L7
+_L7:
+ }
+
+ private InputStream findConfigFileURLFromAssets(boolean flag)
+ {
+ return getResource((new StringBuilder()).append(ASSETS_DIR).append("/").append("logback.xml").toString(), classLoader, flag);
+ }
+
+ private InputStream getResource(String s, ClassLoader classloader, boolean flag)
+ {
+ InputStream inputstream = classloader.getResourceAsStream(s);
+ if(flag)
+ {
+ String s1 = null;
+ if(inputstream != null)
+ s1 = s;
+ statusOnResourceSearch(s, classloader, s1);
+ }
+ return inputstream;
+ }
+
+ private void statusOnResourceSearch(String s, ClassLoader classloader, String s1)
+ {
+ StatusManager statusmanager = loggerContext.getStatusManager();
+ if(s1 == null)
+ statusmanager.add(new InfoStatus((new StringBuilder()).append("Could NOT find resource [").append(s).append("]").toString(), loggerContext));
+ else
+ statusmanager.add(new InfoStatus((new StringBuilder()).append("Found resource [").append(s).append("] at [").append(s1).append("]").toString(), loggerContext));
+ }
+
+ public void autoConfig()
+ throws JoranException
+ {
+ StatusListenerConfigHelper.installIfAsked(loggerContext);
+ boolean flag = false;
+ JoranConfigurator joranconfigurator = new JoranConfigurator();
+ joranconfigurator.setContext(loggerContext);
+ URL url = findConfigFileFromSystemProperties(true);
+ if(url != null)
+ {
+ joranconfigurator.doConfigure(url);
+ flag = true;
+ }
+ if(!flag)
+ {
+ InputStream inputstream = findConfigFileURLFromAssets(true);
+ if(inputstream != null)
+ joranconfigurator.doConfigure(inputstream);
+ }
+ }
+
+ private static final String ASSETS_DIR = CommonPathUtil.getAssetsDirectoryPath();
+ public static final String AUTOCONFIG_FILE = "logback.xml";
+ public static final String CONFIG_FILE_PROPERTY = "logback.configurationFile";
+ public static final String STATUS_LISTENER_CLASS = "logback.statusListenerClass";
+ final ClassLoader classLoader = Loader.getClassLoaderOfObject(this);
+ final LoggerContext loggerContext;
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/util/ContextSelectorStaticBinder.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/util/ContextSelectorStaticBinder.java
new file mode 100644
index 0000000..d6d3e59
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/util/ContextSelectorStaticBinder.java
@@ -0,0 +1,69 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.util;
+
+import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.classic.selector.ContextSelector;
+import ch.qos.logback.classic.selector.DefaultContextSelector;
+import ch.qos.logback.core.util.Loader;
+import ch.qos.logback.core.util.OptionHelper;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+
+public class ContextSelectorStaticBinder
+{
+
+ public ContextSelectorStaticBinder()
+ {
+ }
+
+ static ContextSelector dynamicalContextSelector(LoggerContext loggercontext, String s)
+ throws ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException
+ {
+ Class class1 = Loader.loadClass(s);
+ Class aclass[] = new Class[1];
+ aclass[0] = ch/qos/logback/classic/LoggerContext;
+ Constructor constructor = class1.getConstructor(aclass);
+ Object aobj[] = new Object[1];
+ aobj[0] = loggercontext;
+ return (ContextSelector)constructor.newInstance(aobj);
+ }
+
+ public static ContextSelectorStaticBinder getSingleton()
+ {
+ return singleton;
+ }
+
+ public ContextSelector getContextSelector()
+ {
+ return contextSelector;
+ }
+
+ public void init(LoggerContext loggercontext, Object obj)
+ throws ClassNotFoundException, NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException
+ {
+ String s;
+ if(key == null)
+ key = obj;
+ else
+ if(key != obj)
+ throw new IllegalAccessException("Only certain classes can access this method.");
+ s = OptionHelper.getSystemProperty("logback.ContextSelector");
+ if(s == null)
+ {
+ contextSelector = new DefaultContextSelector(loggercontext);
+ } else
+ {
+ if(s.equals("JNDI"))
+ throw new RuntimeException("JNDI not supported");
+ contextSelector = dynamicalContextSelector(loggercontext, s);
+ }
+ }
+
+ static ContextSelectorStaticBinder singleton = new ContextSelectorStaticBinder();
+ ContextSelector contextSelector;
+ Object key;
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/util/CopyOnInheritThreadLocal.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/util/CopyOnInheritThreadLocal.java
new file mode 100644
index 0000000..bf9ce3c
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/util/CopyOnInheritThreadLocal.java
@@ -0,0 +1,30 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.util;
+
+import java.util.HashMap;
+
+public class CopyOnInheritThreadLocal extends InheritableThreadLocal
+{
+
+ public CopyOnInheritThreadLocal()
+ {
+ }
+
+ protected volatile Object childValue(Object obj)
+ {
+ return childValue((HashMap)obj);
+ }
+
+ protected HashMap childValue(HashMap hashmap)
+ {
+ HashMap hashmap1;
+ if(hashmap == null)
+ hashmap1 = null;
+ else
+ hashmap1 = new HashMap(hashmap);
+ return hashmap1;
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/util/DefaultNestedComponentRules.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/util/DefaultNestedComponentRules.java
new file mode 100644
index 0000000..ca35c10
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/util/DefaultNestedComponentRules.java
@@ -0,0 +1,29 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.util;
+
+import ch.qos.logback.classic.PatternLayout;
+import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
+import ch.qos.logback.core.AppenderBase;
+import ch.qos.logback.core.UnsynchronizedAppenderBase;
+import ch.qos.logback.core.joran.spi.DefaultNestedComponentRegistry;
+import ch.qos.logback.core.net.ssl.SSLNestedComponentRegistryRules;
+
+public class DefaultNestedComponentRules
+{
+
+ public DefaultNestedComponentRules()
+ {
+ }
+
+ public static void addDefaultNestedComponentRegistryRules(DefaultNestedComponentRegistry defaultnestedcomponentregistry)
+ {
+ defaultnestedcomponentregistry.add(ch/qos/logback/core/AppenderBase, "layout", ch/qos/logback/classic/PatternLayout);
+ defaultnestedcomponentregistry.add(ch/qos/logback/core/UnsynchronizedAppenderBase, "layout", ch/qos/logback/classic/PatternLayout);
+ defaultnestedcomponentregistry.add(ch/qos/logback/core/AppenderBase, "encoder", ch/qos/logback/classic/encoder/PatternLayoutEncoder);
+ defaultnestedcomponentregistry.add(ch/qos/logback/core/UnsynchronizedAppenderBase, "encoder", ch/qos/logback/classic/encoder/PatternLayoutEncoder);
+ SSLNestedComponentRegistryRules.addDefaultNestedComponentRegistryRules(defaultnestedcomponentregistry);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/util/LevelToSyslogSeverity.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/util/LevelToSyslogSeverity.java
new file mode 100644
index 0000000..d99109e
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/util/LevelToSyslogSeverity.java
@@ -0,0 +1,45 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.util;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+
+public class LevelToSyslogSeverity
+{
+
+ public LevelToSyslogSeverity()
+ {
+ }
+
+ public static int convert(ILoggingEvent iloggingevent)
+ {
+ Level level = iloggingevent.getLevel();
+ level.levelInt;
+ JVM INSTR lookupswitch 5: default 60
+ // 5000: 107
+ // 10000: 107
+ // 20000: 101
+ // 30000: 96
+ // 40000: 92;
+ goto _L1 _L2 _L2 _L3 _L4 _L5
+_L1:
+ throw new IllegalArgumentException((new StringBuilder()).append("Level ").append(level).append(" is not a valid level for a printing method").toString());
+_L5:
+ byte byte0 = 3;
+_L7:
+ return byte0;
+_L4:
+ byte0 = 4;
+ continue; /* Loop/switch isn't completed */
+_L3:
+ byte0 = 6;
+ continue; /* Loop/switch isn't completed */
+_L2:
+ byte0 = 7;
+ if(true) goto _L7; else goto _L6
+_L6:
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/util/LogbackMDCAdapter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/util/LogbackMDCAdapter.java
new file mode 100644
index 0000000..f9e6da9
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/util/LogbackMDCAdapter.java
@@ -0,0 +1,141 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.util;
+
+import java.util.*;
+import org.slf4j.spi.MDCAdapter;
+
+public final class LogbackMDCAdapter
+ implements MDCAdapter
+{
+
+ public LogbackMDCAdapter()
+ {
+ }
+
+ private Map duplicateAndInsertNewMap(Map map)
+ {
+ Map map1 = Collections.synchronizedMap(new HashMap());
+ if(map == null) goto _L2; else goto _L1
+_L1:
+ map;
+ JVM INSTR monitorenter ;
+ map1.putAll(map);
+ map;
+ JVM INSTR monitorexit ;
+_L2:
+ copyOnInheritThreadLocal.set(map1);
+ return map1;
+ Exception exception;
+ exception;
+ map;
+ JVM INSTR monitorexit ;
+ throw exception;
+ }
+
+ private Integer getAndSetLastOperation(int i)
+ {
+ Integer integer = (Integer)lastOperation.get();
+ lastOperation.set(Integer.valueOf(i));
+ return integer;
+ }
+
+ private boolean wasLastOpReadOrNull(Integer integer)
+ {
+ boolean flag;
+ if(integer == null || integer.intValue() == 2)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ public void clear()
+ {
+ lastOperation.set(Integer.valueOf(1));
+ copyOnInheritThreadLocal.remove();
+ }
+
+ public String get(String s)
+ {
+ Map map = getPropertyMap();
+ String s1;
+ if(map != null && s != null)
+ s1 = (String)map.get(s);
+ else
+ s1 = null;
+ return s1;
+ }
+
+ public Map getCopyOfContextMap()
+ {
+ lastOperation.set(Integer.valueOf(2));
+ Map map = (Map)copyOnInheritThreadLocal.get();
+ Object obj;
+ if(map == null)
+ obj = null;
+ else
+ obj = new HashMap(map);
+ return ((Map) (obj));
+ }
+
+ public Set getKeys()
+ {
+ Map map = getPropertyMap();
+ Set set;
+ if(map != null)
+ set = map.keySet();
+ else
+ set = null;
+ return set;
+ }
+
+ public Map getPropertyMap()
+ {
+ lastOperation.set(Integer.valueOf(2));
+ return (Map)copyOnInheritThreadLocal.get();
+ }
+
+ public void put(String s, String s1)
+ throws IllegalArgumentException
+ {
+ if(s == null)
+ throw new IllegalArgumentException("key cannot be null");
+ Map map = (Map)copyOnInheritThreadLocal.get();
+ if(wasLastOpReadOrNull(getAndSetLastOperation(1)) || map == null)
+ duplicateAndInsertNewMap(map).put(s, s1);
+ else
+ map.put(s, s1);
+ }
+
+ public void remove(String s)
+ {
+ if(s != null) goto _L2; else goto _L1
+_L1:
+ return;
+_L2:
+ Map map = (Map)copyOnInheritThreadLocal.get();
+ if(map != null)
+ if(wasLastOpReadOrNull(getAndSetLastOperation(1)))
+ duplicateAndInsertNewMap(map).remove(s);
+ else
+ map.remove(s);
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ public void setContextMap(Map map)
+ {
+ lastOperation.set(Integer.valueOf(1));
+ Map map1 = Collections.synchronizedMap(new HashMap());
+ map1.putAll(map);
+ copyOnInheritThreadLocal.set(map1);
+ }
+
+ private static final int READ_OPERATION = 2;
+ private static final int WRITE_OPERATION = 1;
+ final InheritableThreadLocal copyOnInheritThreadLocal = new InheritableThreadLocal();
+ final ThreadLocal lastOperation = new ThreadLocal();
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/util/LoggerNameUtil.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/util/LoggerNameUtil.java
new file mode 100644
index 0000000..4cc4f18
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/util/LoggerNameUtil.java
@@ -0,0 +1,40 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.util;
+
+
+public class LoggerNameUtil
+{
+
+ public LoggerNameUtil()
+ {
+ }
+
+ public static int getFirstSeparatorIndexOf(String s)
+ {
+ return getSeparatorIndexOf(s, 0);
+ }
+
+ public static int getSeparatorIndexOf(String s, int i)
+ {
+ int j;
+ int k;
+ j = s.indexOf('.', i);
+ k = s.indexOf('$', i);
+ if(j != -1 || k != -1) goto _L2; else goto _L1
+_L1:
+ j = -1;
+_L4:
+ return j;
+_L2:
+ if(j == -1)
+ j = k;
+ else
+ if(k != -1 && j >= k)
+ j = k;
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/util/StatusListenerConfigHelper.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/util/StatusListenerConfigHelper.java
new file mode 100644
index 0000000..b86c41f
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/classic/util/StatusListenerConfigHelper.java
@@ -0,0 +1,59 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.classic.util;
+
+import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.core.spi.ContextAware;
+import ch.qos.logback.core.spi.LifeCycle;
+import ch.qos.logback.core.status.StatusListener;
+import ch.qos.logback.core.status.StatusManager;
+import ch.qos.logback.core.util.OptionHelper;
+
+public class StatusListenerConfigHelper
+{
+
+ public StatusListenerConfigHelper()
+ {
+ }
+
+ private static void addStatusListener(LoggerContext loggercontext, String s)
+ {
+ initListener(loggercontext, createListenerPerClassName(loggercontext, s));
+ }
+
+ private static StatusListener createListenerPerClassName(LoggerContext loggercontext, String s)
+ {
+ StatusListener statuslistener;
+ try
+ {
+ statuslistener = (StatusListener)OptionHelper.instantiateByClassName(s, ch/qos/logback/core/status/StatusListener, loggercontext);
+ }
+ catch(Exception exception)
+ {
+ exception.printStackTrace();
+ statuslistener = null;
+ }
+ return statuslistener;
+ }
+
+ private static void initListener(LoggerContext loggercontext, StatusListener statuslistener)
+ {
+ if(statuslistener != null)
+ {
+ if(statuslistener instanceof ContextAware)
+ ((ContextAware)statuslistener).setContext(loggercontext);
+ if(statuslistener instanceof LifeCycle)
+ ((LifeCycle)statuslistener).start();
+ loggercontext.getStatusManager().add(statuslistener);
+ }
+ }
+
+ static void installIfAsked(LoggerContext loggercontext)
+ {
+ String s = OptionHelper.getSystemProperty("logback.statusListenerClass");
+ if(!OptionHelper.isEmpty(s))
+ addStatusListener(loggercontext, s);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/Appender.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/Appender.java
new file mode 100644
index 0000000..d360229
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/Appender.java
@@ -0,0 +1,24 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core;
+
+import ch.qos.logback.core.spi.ContextAware;
+import ch.qos.logback.core.spi.FilterAttachable;
+import ch.qos.logback.core.spi.LifeCycle;
+
+// Referenced classes of package ch.qos.logback.core:
+// LogbackException
+
+public interface Appender
+ extends LifeCycle, ContextAware, FilterAttachable
+{
+
+ public abstract void doAppend(Object obj)
+ throws LogbackException;
+
+ public abstract String getName();
+
+ public abstract void setName(String s);
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/AppenderBase.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/AppenderBase.java
new file mode 100644
index 0000000..1433ec4
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/AppenderBase.java
@@ -0,0 +1,141 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core;
+
+import ch.qos.logback.core.filter.Filter;
+import ch.qos.logback.core.spi.ContextAwareBase;
+import ch.qos.logback.core.spi.FilterAttachableImpl;
+import ch.qos.logback.core.spi.FilterReply;
+import ch.qos.logback.core.status.WarnStatus;
+import java.util.List;
+
+// Referenced classes of package ch.qos.logback.core:
+// Appender
+
+public abstract class AppenderBase extends ContextAwareBase
+ implements Appender
+{
+
+ public AppenderBase()
+ {
+ started = false;
+ guard = false;
+ fai = new FilterAttachableImpl();
+ statusRepeatCount = 0;
+ exceptionCount = 0;
+ }
+
+ public void addFilter(Filter filter)
+ {
+ fai.addFilter(filter);
+ }
+
+ protected abstract void append(Object obj);
+
+ public void clearAllFilters()
+ {
+ fai.clearAllFilters();
+ }
+
+ /**
+ * @deprecated Method doAppend is deprecated
+ */
+
+ public void doAppend(Object obj)
+ {
+ this;
+ JVM INSTR monitorenter ;
+ boolean flag = guard;
+ if(!flag) goto _L2; else goto _L1
+_L1:
+ this;
+ JVM INSTR monitorexit ;
+ return;
+_L2:
+ guard = true;
+ if(started)
+ break MISSING_BLOCK_LABEL_98;
+ int j = statusRepeatCount;
+ statusRepeatCount = j + 1;
+ if(j < 5)
+ addStatus(new WarnStatus((new StringBuilder()).append("Attempted to append to non started appender [").append(name).append("].").toString(), this));
+ guard = false;
+ goto _L1
+ Exception exception;
+ exception;
+ throw exception;
+ FilterReply filterreply;
+ FilterReply filterreply1;
+ filterreply = getFilterChainDecision(obj);
+ filterreply1 = FilterReply.DENY;
+ if(filterreply != filterreply1)
+ break MISSING_BLOCK_LABEL_125;
+ guard = false;
+ goto _L1
+ append(obj);
+ guard = false;
+ goto _L1
+ Exception exception2;
+ exception2;
+ int i = exceptionCount;
+ exceptionCount = i + 1;
+ if(i < 5)
+ addError((new StringBuilder()).append("Appender [").append(name).append("] failed to append.").toString(), exception2);
+ guard = false;
+ goto _L1
+ Exception exception1;
+ exception1;
+ guard = false;
+ throw exception1;
+ }
+
+ public List getCopyOfAttachedFiltersList()
+ {
+ return fai.getCopyOfAttachedFiltersList();
+ }
+
+ public FilterReply getFilterChainDecision(Object obj)
+ {
+ return fai.getFilterChainDecision(obj);
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public boolean isStarted()
+ {
+ return started;
+ }
+
+ public void setName(String s)
+ {
+ name = s;
+ }
+
+ public void start()
+ {
+ started = true;
+ }
+
+ public void stop()
+ {
+ started = false;
+ }
+
+ public String toString()
+ {
+ return (new StringBuilder()).append(getClass().getName()).append("[").append(name).append("]").toString();
+ }
+
+ static final int ALLOWED_REPEATS = 5;
+ private int exceptionCount;
+ private FilterAttachableImpl fai;
+ private boolean guard;
+ protected String name;
+ protected boolean started;
+ private int statusRepeatCount;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/AsyncAppenderBase.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/AsyncAppenderBase.java
new file mode 100644
index 0000000..57eeabf
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/AsyncAppenderBase.java
@@ -0,0 +1,221 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core;
+
+import ch.qos.logback.core.spi.AppenderAttachable;
+import ch.qos.logback.core.spi.AppenderAttachableImpl;
+import java.util.Iterator;
+import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.BlockingQueue;
+
+// Referenced classes of package ch.qos.logback.core:
+// UnsynchronizedAppenderBase, Appender
+
+public class AsyncAppenderBase extends UnsynchronizedAppenderBase
+ implements AppenderAttachable
+{
+ class Worker extends Thread
+ {
+
+ public void run()
+ {
+ AsyncAppenderBase asyncappenderbase = AsyncAppenderBase.this;
+ AppenderAttachableImpl appenderattachableimpl = asyncappenderbase.aai;
+ do
+ {
+ if(!asyncappenderbase.isStarted())
+ break;
+ try
+ {
+ appenderattachableimpl.appendLoopOnAppenders(asyncappenderbase.blockingQueue.take());
+ continue;
+ }
+ catch(InterruptedException interruptedexception) { }
+ break;
+ } while(true);
+ addInfo("Worker thread will flush remaining events before exiting.");
+ for(Iterator iterator = asyncappenderbase.blockingQueue.iterator(); iterator.hasNext(); appenderattachableimpl.appendLoopOnAppenders(iterator.next()));
+ appenderattachableimpl.detachAndStopAllAppenders();
+ }
+
+ final AsyncAppenderBase this$0;
+
+ Worker()
+ {
+ this$0 = AsyncAppenderBase.this;
+ super();
+ }
+ }
+
+
+ public AsyncAppenderBase()
+ {
+ aai = new AppenderAttachableImpl();
+ queueSize = 256;
+ appenderCount = 0;
+ discardingThreshold = -1;
+ worker = new Worker();
+ }
+
+ private boolean isQueueBelowDiscardingThreshold()
+ {
+ boolean flag;
+ if(blockingQueue.remainingCapacity() < discardingThreshold)
+ flag = true;
+ else
+ flag = false;
+ return flag;
+ }
+
+ private void put(Object obj)
+ {
+ blockingQueue.put(obj);
+_L2:
+ return;
+ InterruptedException interruptedexception;
+ interruptedexception;
+ if(true) goto _L2; else goto _L1
+_L1:
+ }
+
+ public void addAppender(Appender appender)
+ {
+ if(appenderCount == 0)
+ {
+ appenderCount = 1 + appenderCount;
+ addInfo((new StringBuilder()).append("Attaching appender named [").append(appender.getName()).append("] to AsyncAppender.").toString());
+ aai.addAppender(appender);
+ } else
+ {
+ addWarn("One and only one appender may be attached to AsyncAppender.");
+ addWarn((new StringBuilder()).append("Ignoring additional appender named [").append(appender.getName()).append("]").toString());
+ }
+ }
+
+ protected void append(Object obj)
+ {
+ if(!isQueueBelowDiscardingThreshold() || !isDiscardable(obj))
+ {
+ preprocess(obj);
+ put(obj);
+ }
+ }
+
+ public void detachAndStopAllAppenders()
+ {
+ aai.detachAndStopAllAppenders();
+ }
+
+ public boolean detachAppender(Appender appender)
+ {
+ return aai.detachAppender(appender);
+ }
+
+ public boolean detachAppender(String s)
+ {
+ return aai.detachAppender(s);
+ }
+
+ public Appender getAppender(String s)
+ {
+ return aai.getAppender(s);
+ }
+
+ public int getDiscardingThreshold()
+ {
+ return discardingThreshold;
+ }
+
+ public int getNumberOfElementsInQueue()
+ {
+ return blockingQueue.size();
+ }
+
+ public int getQueueSize()
+ {
+ return queueSize;
+ }
+
+ public int getRemainingCapacity()
+ {
+ return blockingQueue.remainingCapacity();
+ }
+
+ public boolean isAttached(Appender appender)
+ {
+ return aai.isAttached(appender);
+ }
+
+ protected boolean isDiscardable(Object obj)
+ {
+ return false;
+ }
+
+ public Iterator iteratorForAppenders()
+ {
+ return aai.iteratorForAppenders();
+ }
+
+ protected void preprocess(Object obj)
+ {
+ }
+
+ public void setDiscardingThreshold(int i)
+ {
+ discardingThreshold = i;
+ }
+
+ public void setQueueSize(int i)
+ {
+ queueSize = i;
+ }
+
+ public void start()
+ {
+ if(appenderCount == 0)
+ addError("No attached appenders found.");
+ else
+ if(queueSize < 1)
+ {
+ addError((new StringBuilder()).append("Invalid queue size [").append(queueSize).append("]").toString());
+ } else
+ {
+ blockingQueue = new ArrayBlockingQueue(queueSize);
+ if(discardingThreshold == -1)
+ discardingThreshold = queueSize / 5;
+ addInfo((new StringBuilder()).append("Setting discardingThreshold to ").append(discardingThreshold).toString());
+ worker.setDaemon(true);
+ worker.setName((new StringBuilder()).append("AsyncAppender-Worker-").append(worker.getName()).toString());
+ super.start();
+ worker.start();
+ }
+ }
+
+ public void stop()
+ {
+ if(isStarted())
+ {
+ super.stop();
+ worker.interrupt();
+ try
+ {
+ worker.join(1000L);
+ }
+ catch(InterruptedException interruptedexception)
+ {
+ addError("Failed to join worker thread", interruptedexception);
+ }
+ }
+ }
+
+ public static final int DEFAULT_QUEUE_SIZE = 256;
+ static final int UNDEFINED = -1;
+ AppenderAttachableImpl aai;
+ int appenderCount;
+ BlockingQueue blockingQueue;
+ int discardingThreshold;
+ int queueSize;
+ Worker worker;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/BasicStatusManager.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/BasicStatusManager.java
new file mode 100644
index 0000000..f12b185
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/BasicStatusManager.java
@@ -0,0 +1,143 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core;
+
+import ch.qos.logback.core.helpers.CyclicBuffer;
+import ch.qos.logback.core.spi.LogbackLock;
+import ch.qos.logback.core.status.Status;
+import ch.qos.logback.core.status.StatusListener;
+import ch.qos.logback.core.status.StatusManager;
+import ch.qos.logback.core.status.WarnStatus;
+import java.util.*;
+
+public class BasicStatusManager
+ implements StatusManager
+{
+
+ public BasicStatusManager()
+ {
+ count = 0;
+ level = 0;
+ }
+
+ private void fireStatusAddEvent(Status status)
+ {
+ LogbackLock logbacklock = statusListenerListLock;
+ logbacklock;
+ JVM INSTR monitorenter ;
+ for(Iterator iterator = statusListenerList.iterator(); iterator.hasNext(); ((StatusListener)iterator.next()).addStatusEvent(status));
+ break MISSING_BLOCK_LABEL_52;
+ Exception exception;
+ exception;
+ throw exception;
+ logbacklock;
+ JVM INSTR monitorexit ;
+ }
+
+ public void add(Status status)
+ {
+ fireStatusAddEvent(status);
+ count = 1 + count;
+ if(status.getLevel() > level)
+ level = status.getLevel();
+ LogbackLock logbacklock = statusListLock;
+ logbacklock;
+ JVM INSTR monitorenter ;
+ if(statusList.size() < 150)
+ statusList.add(status);
+ else
+ tailBuffer.add(status);
+ return;
+ }
+
+ public void add(StatusListener statuslistener)
+ {
+ LogbackLock logbacklock = statusListenerListLock;
+ logbacklock;
+ JVM INSTR monitorenter ;
+ statusListenerList.add(statuslistener);
+ return;
+ }
+
+ public boolean addUniquely(StatusListener statuslistener, Object obj)
+ {
+ Iterator iterator = getCopyOfStatusListenerList().iterator();
+_L4:
+ if(!iterator.hasNext()) goto _L2; else goto _L1
+_L1:
+ StatusListener statuslistener1 = (StatusListener)iterator.next();
+ if(!statuslistener1.getClass().isInstance(statuslistener)) goto _L4; else goto _L3
+_L3:
+ boolean flag;
+ add(new WarnStatus((new StringBuilder()).append("A previous listener of type [").append(statuslistener1.getClass()).append("] has been already registered. Skipping double registration.").toString(), obj));
+ flag = false;
+_L6:
+ return flag;
+_L2:
+ add(statuslistener);
+ flag = true;
+ if(true) goto _L6; else goto _L5
+_L5:
+ }
+
+ public void clear()
+ {
+ LogbackLock logbacklock = statusListLock;
+ logbacklock;
+ JVM INSTR monitorenter ;
+ count = 0;
+ statusList.clear();
+ tailBuffer.clear();
+ return;
+ }
+
+ public List getCopyOfStatusList()
+ {
+ LogbackLock logbacklock = statusListLock;
+ logbacklock;
+ JVM INSTR monitorenter ;
+ ArrayList arraylist = new ArrayList(statusList);
+ arraylist.addAll(tailBuffer.asList());
+ return arraylist;
+ }
+
+ public List getCopyOfStatusListenerList()
+ {
+ LogbackLock logbacklock = statusListenerListLock;
+ logbacklock;
+ JVM INSTR monitorenter ;
+ ArrayList arraylist = new ArrayList(statusListenerList);
+ return arraylist;
+ }
+
+ public int getCount()
+ {
+ return count;
+ }
+
+ public int getLevel()
+ {
+ return level;
+ }
+
+ public void remove(StatusListener statuslistener)
+ {
+ LogbackLock logbacklock = statusListenerListLock;
+ logbacklock;
+ JVM INSTR monitorenter ;
+ statusListenerList.remove(statuslistener);
+ return;
+ }
+
+ public static final int MAX_HEADER_COUNT = 150;
+ public static final int TAIL_SIZE = 150;
+ int count;
+ int level;
+ protected final List statusList = new ArrayList();
+ protected final LogbackLock statusListLock = new LogbackLock();
+ protected final List statusListenerList = new ArrayList();
+ protected final LogbackLock statusListenerListLock = new LogbackLock();
+ protected final CyclicBuffer tailBuffer = new CyclicBuffer(150);
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/ConsoleAppender.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/ConsoleAppender.java
new file mode 100644
index 0000000..60e3fad
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/ConsoleAppender.java
@@ -0,0 +1,51 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core;
+
+import ch.qos.logback.core.joran.spi.ConsoleTarget;
+import ch.qos.logback.core.status.Status;
+import ch.qos.logback.core.status.WarnStatus;
+import java.util.Arrays;
+
+// Referenced classes of package ch.qos.logback.core:
+// OutputStreamAppender
+
+public class ConsoleAppender extends OutputStreamAppender
+{
+
+ public ConsoleAppender()
+ {
+ target = ConsoleTarget.SystemOut;
+ }
+
+ private void targetWarn(String s)
+ {
+ WarnStatus warnstatus = new WarnStatus((new StringBuilder()).append("[").append(s).append("] should be one of ").append(Arrays.toString(ConsoleTarget.values())).toString(), this);
+ warnstatus.add(new WarnStatus("Using previously set target, System.out by default.", this));
+ addStatus(warnstatus);
+ }
+
+ public String getTarget()
+ {
+ return target.getName();
+ }
+
+ public void setTarget(String s)
+ {
+ ConsoleTarget consoletarget = ConsoleTarget.findByName(s.trim());
+ if(consoletarget == null)
+ targetWarn(s);
+ else
+ target = consoletarget;
+ }
+
+ public void start()
+ {
+ setOutputStream(target.getStream());
+ super.start();
+ }
+
+ protected ConsoleTarget target;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/Context.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/Context.java
new file mode 100644
index 0000000..7bf69cf
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/Context.java
@@ -0,0 +1,40 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core;
+
+import ch.qos.logback.core.spi.LifeCycle;
+import ch.qos.logback.core.spi.PropertyContainer;
+import ch.qos.logback.core.status.StatusManager;
+import java.util.Map;
+import java.util.concurrent.ExecutorService;
+
+public interface Context
+ extends PropertyContainer
+{
+
+ public abstract long getBirthTime();
+
+ public abstract Object getConfigurationLock();
+
+ public abstract Map getCopyOfPropertyMap();
+
+ public abstract ExecutorService getExecutorService();
+
+ public abstract String getName();
+
+ public abstract Object getObject(String s);
+
+ public abstract String getProperty(String s);
+
+ public abstract StatusManager getStatusManager();
+
+ public abstract void putObject(String s, Object obj);
+
+ public abstract void putProperty(String s, String s1);
+
+ public abstract void register(LifeCycle lifecycle);
+
+ public abstract void setName(String s);
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/ContextBase.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/ContextBase.java
new file mode 100644
index 0000000..d42f38a
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/ContextBase.java
@@ -0,0 +1,205 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core;
+
+import ch.qos.logback.core.spi.LifeCycle;
+import ch.qos.logback.core.spi.LogbackLock;
+import ch.qos.logback.core.status.StatusManager;
+import ch.qos.logback.core.util.ExecutorServiceUtil;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ExecutorService;
+
+// Referenced classes of package ch.qos.logback.core:
+// Context, BasicStatusManager, LifeCycleManager
+
+public class ContextBase
+ implements Context, LifeCycle
+{
+
+ public ContextBase()
+ {
+ birthTime = System.currentTimeMillis();
+ sm = new BasicStatusManager();
+ propertyMap = new HashMap();
+ objectMap = new HashMap();
+ configurationLock = new LogbackLock();
+ }
+
+ /**
+ * @deprecated Method stopExecutorService is deprecated
+ */
+
+ private void stopExecutorService()
+ {
+ this;
+ JVM INSTR monitorenter ;
+ if(executorService != null)
+ {
+ ExecutorServiceUtil.shutdown(executorService);
+ executorService = null;
+ }
+ this;
+ JVM INSTR monitorexit ;
+ return;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ public long getBirthTime()
+ {
+ return birthTime;
+ }
+
+ public Object getConfigurationLock()
+ {
+ return configurationLock;
+ }
+
+ public Map getCopyOfPropertyMap()
+ {
+ return new HashMap(propertyMap);
+ }
+
+ public ExecutorService getExecutorService()
+ {
+ if(executorService != null) goto _L2; else goto _L1
+_L1:
+ this;
+ JVM INSTR monitorenter ;
+ if(executorService == null)
+ executorService = ExecutorServiceUtil.newExecutorService();
+ this;
+ JVM INSTR monitorexit ;
+_L2:
+ return executorService;
+ Exception exception;
+ exception;
+ this;
+ JVM INSTR monitorexit ;
+ throw exception;
+ }
+
+ /**
+ * @deprecated Method getLifeCycleManager is deprecated
+ */
+
+ LifeCycleManager getLifeCycleManager()
+ {
+ this;
+ JVM INSTR monitorenter ;
+ LifeCycleManager lifecyclemanager;
+ if(lifeCycleManager == null)
+ lifeCycleManager = new LifeCycleManager();
+ lifecyclemanager = lifeCycleManager;
+ this;
+ JVM INSTR monitorexit ;
+ return lifecyclemanager;
+ Exception exception;
+ exception;
+ throw exception;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public Object getObject(String s)
+ {
+ return objectMap.get(s);
+ }
+
+ public String getProperty(String s)
+ {
+ String s1;
+ if("CONTEXT_NAME".equals(s))
+ s1 = getName();
+ else
+ s1 = (String)propertyMap.get(s);
+ return s1;
+ }
+
+ public StatusManager getStatusManager()
+ {
+ return sm;
+ }
+
+ public boolean isStarted()
+ {
+ return started;
+ }
+
+ public void putObject(String s, Object obj)
+ {
+ objectMap.put(s, obj);
+ }
+
+ public void putProperty(String s, String s1)
+ {
+ propertyMap.put(s, s1);
+ }
+
+ public void register(LifeCycle lifecycle)
+ {
+ getLifeCycleManager().register(lifecycle);
+ }
+
+ public void reset()
+ {
+ getLifeCycleManager().reset();
+ propertyMap.clear();
+ objectMap.clear();
+ }
+
+ public void setName(String s)
+ throws IllegalStateException
+ {
+ if(s == null || !s.equals(name))
+ if(name == null || "default".equals(name))
+ name = s;
+ else
+ throw new IllegalStateException("Context has been already given a name");
+ }
+
+ public void setStatusManager(StatusManager statusmanager)
+ {
+ if(statusmanager == null)
+ {
+ throw new IllegalArgumentException("null StatusManager not allowed");
+ } else
+ {
+ sm = statusmanager;
+ return;
+ }
+ }
+
+ public void start()
+ {
+ started = true;
+ }
+
+ public void stop()
+ {
+ stopExecutorService();
+ started = false;
+ }
+
+ public String toString()
+ {
+ return name;
+ }
+
+ private long birthTime;
+ LogbackLock configurationLock;
+ private volatile ExecutorService executorService;
+ private LifeCycleManager lifeCycleManager;
+ private String name;
+ Map objectMap;
+ Map propertyMap;
+ private StatusManager sm;
+ private boolean started;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/CoreConstants.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/CoreConstants.java
new file mode 100644
index 0000000..f5a0620
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/CoreConstants.java
@@ -0,0 +1,93 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core;
+
+import ch.qos.logback.core.util.EnvUtil;
+
+public class CoreConstants
+{
+
+ public CoreConstants()
+ {
+ }
+
+ public static final int BYTES_PER_INT = 4;
+ public static final String CAUSED_BY = "Caused by: ";
+ public static final String CLF_DATE_PATTERN = "dd/MMM/yyyy:HH:mm:ss Z";
+ public static final String CODES_URL = "http://logback.qos.ch/codes.html";
+ public static final char COLON_CHAR = 58;
+ public static final char COMMA_CHAR = 44;
+ public static final String CONFIGURATION_WATCH_LIST = "CONFIGURATION_WATCH_LIST";
+ public static final String CONFIGURATION_WATCH_LIST_RESET = "CONFIGURATION_WATCH_LIST_RESET";
+ public static final String CONTEXT_NAME_KEY = "CONTEXT_NAME";
+ public static final String CONTEXT_SCOPE_VALUE = "context";
+ public static final int CORE_POOL_SIZE = 0;
+ public static final char CURLY_LEFT = 123;
+ public static final char CURLY_RIGHT = 125;
+ public static final String DAILY_DATE_PATTERN = "yyyy-MM-dd";
+ public static final char DASH_CHAR = 45;
+ public static final String DATA_DIR_KEY = "DATA_DIR";
+ public static final String DEFAULT_CONTEXT_NAME = "default";
+ public static final String DEFAULT_VALUE_SEPARATOR = ":-";
+ public static final char DOLLAR = 36;
+ public static final char DOT = 46;
+ public static final char DOUBLE_QUOTE_CHAR = 34;
+ public static final String EMPTY_STRING = "";
+ public static final char ESCAPE_CHAR = 92;
+ public static final String EVALUATOR_MAP = "EVALUATOR_MAP";
+ public static final String EXT_DIR_KEY = "EXT_DIR";
+ public static final String HOSTNAME_KEY = "HOSTNAME";
+ public static final String ISO8601_PATTERN = "yyyy-MM-dd HH:mm:ss,SSS";
+ public static final String ISO8601_STR = "ISO8601";
+ public static final String LEFT_ACCOLADE;
+ public static final char LEFT_PARENTHESIS_CHAR = 40;
+ public static final String LINE_SEPARATOR = System.getProperty("line.separator");
+ public static final int LINE_SEPARATOR_LEN = LINE_SEPARATOR.length();
+ public static final int MAX_ERROR_COUNT = 4;
+ public static final int MAX_POOL_SIZE = 32;
+ public static final int MILLIS_IN_ONE_DAY = 0x5265c00;
+ public static final int MILLIS_IN_ONE_HOUR = 0x36ee80;
+ public static final int MILLIS_IN_ONE_MINUTE = 60000;
+ public static final int MILLIS_IN_ONE_SECOND = 1000;
+ public static final int MILLIS_IN_ONE_WEEK = 0x240c8400;
+ public static final int OOS_RESET_FREQUENCY = 70;
+ public static final String PACKAGE_NAME_KEY = "PACKAGE_NAME";
+ public static final String PATTERN_RULE_REGISTRY = "PATTERN_RULE_REGISTRY";
+ public static final char PERCENT_CHAR = 37;
+ public static final String RESET_MSG_PREFIX = "Will reset and reconfigure context ";
+ public static final String RIGHT_ACCOLADE;
+ public static final char RIGHT_PARENTHESIS_CHAR = 41;
+ public static final String SAFE_JORAN_CONFIGURATION = "SAFE_JORAN_CONFIGURATION";
+ public static final int SECONDS_TO_WAIT_FOR_COMPRESSION_JOBS = 30;
+ public static final String SEE_FNP_NOT_SET = "See also http://logback.qos.ch/codes.html#tbr_fnp_not_set";
+ public static final char SINGLE_QUOTE_CHAR = 39;
+ public static final String SUPPRESSED = "Suppressed: ";
+ public static final char TAB = 9;
+ public static final int TABLE_ROW_LIMIT = 10000;
+ public static final String UNDEFINED_PROPERTY_SUFFIX = "_IS_UNDEFINED";
+ public static final String VALUE_OF = "valueOf";
+ public static final String VERSION_CODE_KEY = "VERSION_CODE";
+ public static final String VERSION_NAME_KEY = "VERSION_NAME";
+ public static final String WRAPPED_BY = "Wrapped by: ";
+ public static final String XML_PARSING = "XML_PARSING";
+
+ static
+ {
+ int i;
+ char ac[];
+ char ac1[];
+ if(EnvUtil.isJDK5())
+ i = 1;
+ else
+ i = 0;
+ CORE_POOL_SIZE = i;
+ ac = new char[1];
+ ac[0] = '{';
+ LEFT_ACCOLADE = new String(ac);
+ ac1 = new char[1];
+ ac1[0] = '}';
+ RIGHT_ACCOLADE = new String(ac1);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/FileAppender.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/FileAppender.java
new file mode 100644
index 0000000..1a50c91
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/FileAppender.java
@@ -0,0 +1,193 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core;
+
+import ch.qos.logback.core.recovery.ResilientFileOutputStream;
+import ch.qos.logback.core.util.EnvUtil;
+import ch.qos.logback.core.util.FileUtil;
+import java.io.File;
+import java.io.IOException;
+import java.nio.channels.FileChannel;
+import java.nio.channels.FileLock;
+
+// Referenced classes of package ch.qos.logback.core:
+// OutputStreamAppender, Context, NOPOutputStream
+
+public class FileAppender extends OutputStreamAppender
+{
+
+ public FileAppender()
+ {
+ append = true;
+ fileName = null;
+ prudent = false;
+ initialized = false;
+ lazyInit = false;
+ }
+
+ private String getAbsoluteFilePath(String s)
+ {
+ if(EnvUtil.isAndroidOS())
+ s = FileUtil.prefixRelativePath(context.getProperty("DATA_DIR"), s);
+ return s;
+ }
+
+ private void safeWrite(Object obj)
+ throws IOException
+ {
+ FileChannel filechannel = ((ResilientFileOutputStream)getOutputStream()).getChannel();
+ if(filechannel != null) goto _L2; else goto _L1
+_L1:
+ return;
+_L2:
+ FileLock filelock = null;
+ filelock = filechannel.lock();
+ long l = filechannel.position();
+ long l1 = filechannel.size();
+ if(l1 != l)
+ filechannel.position(l1);
+ super.writeOut(obj);
+ if(filelock != null)
+ filelock.release();
+ if(true) goto _L1; else goto _L3
+_L3:
+ Exception exception;
+ exception;
+ if(filelock != null)
+ filelock.release();
+ throw exception;
+ }
+
+ public String getFile()
+ {
+ return fileName;
+ }
+
+ public boolean getLazy()
+ {
+ return lazyInit;
+ }
+
+ public boolean isAppend()
+ {
+ return append;
+ }
+
+ public boolean isPrudent()
+ {
+ return prudent;
+ }
+
+ protected boolean openFile(String s)
+ throws IOException
+ {
+ String s1 = getAbsoluteFilePath(s);
+ ch.qos.logback.core.spi.LogbackLock logbacklock = lock;
+ logbacklock;
+ JVM INSTR monitorenter ;
+ File file = new File(s1);
+ if(FileUtil.isParentDirectoryCreationRequired(file) && !FileUtil.createMissingParentDirectories(file))
+ addError((new StringBuilder()).append("Failed to create parent directories for [").append(file.getAbsolutePath()).append("]").toString());
+ ResilientFileOutputStream resilientfileoutputstream = new ResilientFileOutputStream(file, append);
+ resilientfileoutputstream.setContext(context);
+ setOutputStream(resilientfileoutputstream);
+ return true;
+ }
+
+ public final String rawFileProperty()
+ {
+ return fileName;
+ }
+
+ public void setAppend(boolean flag)
+ {
+ append = flag;
+ }
+
+ public void setFile(String s)
+ {
+ if(s == null)
+ fileName = null;
+ else
+ fileName = s.trim();
+ }
+
+ public void setLazy(boolean flag)
+ {
+ lazyInit = flag;
+ }
+
+ public void setPrudent(boolean flag)
+ {
+ prudent = flag;
+ }
+
+ public void start()
+ {
+ boolean flag = false;
+ String s = getFile();
+ if(s != null)
+ {
+ String s1 = getAbsoluteFilePath(s);
+ addInfo((new StringBuilder()).append("File property is set to [").append(s1).append("]").toString());
+ if(prudent && !isAppend())
+ {
+ setAppend(true);
+ addWarn("Setting \"Append\" property to true on account of \"Prudent\" mode");
+ }
+ if(!lazyInit)
+ try
+ {
+ openFile(s1);
+ }
+ catch(IOException ioexception)
+ {
+ addError((new StringBuilder()).append("openFile(").append(s1).append(",").append(append).append(") failed").toString(), ioexception);
+ flag = true;
+ }
+ else
+ setOutputStream(new NOPOutputStream());
+ } else
+ {
+ addError((new StringBuilder()).append("\"File\" property not set for appender named [").append(name).append("]").toString());
+ flag = true;
+ }
+ if(!flag)
+ super.start();
+ }
+
+ protected void subAppend(Object obj)
+ {
+ if(!initialized && lazyInit)
+ {
+ initialized = true;
+ try
+ {
+ openFile(getFile());
+ }
+ catch(IOException ioexception)
+ {
+ started = false;
+ addError((new StringBuilder()).append("openFile(").append(fileName).append(",").append(append).append(") failed").toString(), ioexception);
+ }
+ }
+ super.subAppend(obj);
+ }
+
+ protected void writeOut(Object obj)
+ throws IOException
+ {
+ if(prudent)
+ safeWrite(obj);
+ else
+ super.writeOut(obj);
+ }
+
+ protected boolean append;
+ protected String fileName;
+ private boolean initialized;
+ private boolean lazyInit;
+ private boolean prudent;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/Layout.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/Layout.java
new file mode 100644
index 0000000..5be4bce
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/Layout.java
@@ -0,0 +1,25 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core;
+
+import ch.qos.logback.core.spi.ContextAware;
+import ch.qos.logback.core.spi.LifeCycle;
+
+public interface Layout
+ extends ContextAware, LifeCycle
+{
+
+ public abstract String doLayout(Object obj);
+
+ public abstract String getContentType();
+
+ public abstract String getFileFooter();
+
+ public abstract String getFileHeader();
+
+ public abstract String getPresentationFooter();
+
+ public abstract String getPresentationHeader();
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/LayoutBase.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/LayoutBase.java
new file mode 100644
index 0000000..b5683db
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/LayoutBase.java
@@ -0,0 +1,95 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core;
+
+import ch.qos.logback.core.spi.ContextAwareBase;
+
+// Referenced classes of package ch.qos.logback.core:
+// Layout, Context
+
+public abstract class LayoutBase extends ContextAwareBase
+ implements Layout
+{
+
+ public LayoutBase()
+ {
+ }
+
+ public String getContentType()
+ {
+ return "text/plain";
+ }
+
+ public Context getContext()
+ {
+ return context;
+ }
+
+ public String getFileFooter()
+ {
+ return fileFooter;
+ }
+
+ public String getFileHeader()
+ {
+ return fileHeader;
+ }
+
+ public String getPresentationFooter()
+ {
+ return presentationFooter;
+ }
+
+ public String getPresentationHeader()
+ {
+ return presentationHeader;
+ }
+
+ public boolean isStarted()
+ {
+ return started;
+ }
+
+ public void setContext(Context context)
+ {
+ this.context = context;
+ }
+
+ public void setFileFooter(String s)
+ {
+ fileFooter = s;
+ }
+
+ public void setFileHeader(String s)
+ {
+ fileHeader = s;
+ }
+
+ public void setPresentationFooter(String s)
+ {
+ presentationFooter = s;
+ }
+
+ public void setPresentationHeader(String s)
+ {
+ presentationHeader = s;
+ }
+
+ public void start()
+ {
+ started = true;
+ }
+
+ public void stop()
+ {
+ started = false;
+ }
+
+ String fileFooter;
+ String fileHeader;
+ String presentationFooter;
+ String presentationHeader;
+ protected boolean started;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/LifeCycleManager.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/LifeCycleManager.java
new file mode 100644
index 0000000..62ab02c
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/LifeCycleManager.java
@@ -0,0 +1,37 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core;
+
+import ch.qos.logback.core.spi.LifeCycle;
+import java.util.*;
+
+public class LifeCycleManager
+{
+
+ public LifeCycleManager()
+ {
+ }
+
+ public void register(LifeCycle lifecycle)
+ {
+ components.add(lifecycle);
+ }
+
+ public void reset()
+ {
+ Iterator iterator = components.iterator();
+ do
+ {
+ if(!iterator.hasNext())
+ break;
+ LifeCycle lifecycle = (LifeCycle)iterator.next();
+ if(lifecycle.isStarted())
+ lifecycle.stop();
+ } while(true);
+ components.clear();
+ }
+
+ private final Set components = new HashSet();
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/LogbackException.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/LogbackException.java
new file mode 100644
index 0000000..28b652f
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/LogbackException.java
@@ -0,0 +1,22 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core;
+
+
+public class LogbackException extends RuntimeException
+{
+
+ public LogbackException(String s)
+ {
+ super(s);
+ }
+
+ public LogbackException(String s, Throwable throwable)
+ {
+ super(s, throwable);
+ }
+
+ private static final long serialVersionUID = 0xf4e5fbf10299c40eL;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/NOPOutputStream.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/NOPOutputStream.java
new file mode 100644
index 0000000..187683a
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/NOPOutputStream.java
@@ -0,0 +1,21 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+public class NOPOutputStream extends OutputStream
+{
+
+ public NOPOutputStream()
+ {
+ }
+
+ public void write(int i)
+ throws IOException
+ {
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/OutputStreamAppender.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/OutputStreamAppender.java
new file mode 100644
index 0000000..ef60e80
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/OutputStreamAppender.java
@@ -0,0 +1,172 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core;
+
+import ch.qos.logback.core.encoder.Encoder;
+import ch.qos.logback.core.encoder.LayoutWrappingEncoder;
+import ch.qos.logback.core.spi.DeferredProcessingAware;
+import ch.qos.logback.core.spi.LogbackLock;
+import ch.qos.logback.core.status.ErrorStatus;
+import java.io.IOException;
+import java.io.OutputStream;
+
+// Referenced classes of package ch.qos.logback.core:
+// UnsynchronizedAppenderBase, Layout
+
+public class OutputStreamAppender extends UnsynchronizedAppenderBase
+{
+
+ public OutputStreamAppender()
+ {
+ lock = new LogbackLock();
+ }
+
+ protected void append(Object obj)
+ {
+ if(isStarted())
+ subAppend(obj);
+ }
+
+ protected void closeOutputStream()
+ {
+ if(outputStream == null)
+ break MISSING_BLOCK_LABEL_23;
+ encoderClose();
+ outputStream.close();
+ outputStream = null;
+_L1:
+ return;
+ IOException ioexception;
+ ioexception;
+ addStatus(new ErrorStatus("Could not close output stream for OutputStreamAppender.", this, ioexception));
+ goto _L1
+ }
+
+ void encoderClose()
+ {
+ if(encoder == null || outputStream == null)
+ break MISSING_BLOCK_LABEL_23;
+ encoder.close();
+_L1:
+ return;
+ IOException ioexception;
+ ioexception;
+ started = false;
+ addStatus(new ErrorStatus((new StringBuilder()).append("Failed to write footer for appender named [").append(name).append("].").toString(), this, ioexception));
+ goto _L1
+ }
+
+ void encoderInit()
+ {
+ if(encoder == null || outputStream == null)
+ break MISSING_BLOCK_LABEL_27;
+ encoder.init(outputStream);
+_L1:
+ return;
+ IOException ioexception;
+ ioexception;
+ started = false;
+ addStatus(new ErrorStatus((new StringBuilder()).append("Failed to initialize encoder for appender named [").append(name).append("].").toString(), this, ioexception));
+ goto _L1
+ }
+
+ public Encoder getEncoder()
+ {
+ return encoder;
+ }
+
+ public OutputStream getOutputStream()
+ {
+ return outputStream;
+ }
+
+ public void setEncoder(Encoder encoder1)
+ {
+ encoder = encoder1;
+ }
+
+ public void setLayout(Layout layout)
+ {
+ addWarn("This appender no longer admits a layout as a sub-component, set an encoder instead.");
+ addWarn("To ensure compatibility, wrapping your layout in LayoutWrappingEncoder.");
+ addWarn("See also http://logback.qos.ch/codes.html#layoutInsteadOfEncoder for details");
+ LayoutWrappingEncoder layoutwrappingencoder = new LayoutWrappingEncoder();
+ layoutwrappingencoder.setLayout(layout);
+ layoutwrappingencoder.setContext(context);
+ encoder = layoutwrappingencoder;
+ }
+
+ public void setOutputStream(OutputStream outputstream)
+ {
+ LogbackLock logbacklock = lock;
+ logbacklock;
+ JVM INSTR monitorenter ;
+ closeOutputStream();
+ outputStream = outputstream;
+ if(encoder == null)
+ addWarn("Encoder has not been set. Cannot invoke its init method.");
+ else
+ encoderInit();
+ return;
+ }
+
+ public void start()
+ {
+ int i = 0;
+ if(encoder == null)
+ {
+ addStatus(new ErrorStatus((new StringBuilder()).append("No encoder set for the appender named \"").append(name).append("\".").toString(), this));
+ i = 1;
+ }
+ if(outputStream == null)
+ {
+ addStatus(new ErrorStatus((new StringBuilder()).append("No output stream set for the appender named \"").append(name).append("\".").toString(), this));
+ i++;
+ }
+ if(i == 0)
+ super.start();
+ }
+
+ public void stop()
+ {
+ LogbackLock logbacklock = lock;
+ logbacklock;
+ JVM INSTR monitorenter ;
+ closeOutputStream();
+ super.stop();
+ return;
+ }
+
+ protected void subAppend(Object obj)
+ {
+ if(isStarted()) goto _L2; else goto _L1
+_L1:
+ return;
+_L2:
+ if(obj instanceof DeferredProcessingAware)
+ ((DeferredProcessingAware)obj).prepareForDeferredProcessing();
+ LogbackLock logbacklock = lock;
+ logbacklock;
+ JVM INSTR monitorenter ;
+ writeOut(obj);
+ continue; /* Loop/switch isn't completed */
+ IOException ioexception;
+ ioexception;
+ started = false;
+ addStatus(new ErrorStatus("IO failure in appender", this, ioexception));
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ protected void writeOut(Object obj)
+ throws IOException
+ {
+ encoder.doEncode(obj);
+ }
+
+ protected Encoder encoder;
+ protected LogbackLock lock;
+ private OutputStream outputStream;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/PropertyDefinerBase.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/PropertyDefinerBase.java
new file mode 100644
index 0000000..16fcc0f
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/PropertyDefinerBase.java
@@ -0,0 +1,27 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core;
+
+import ch.qos.logback.core.spi.ContextAwareBase;
+import ch.qos.logback.core.spi.PropertyDefiner;
+
+public abstract class PropertyDefinerBase extends ContextAwareBase
+ implements PropertyDefiner
+{
+
+ public PropertyDefinerBase()
+ {
+ }
+
+ protected static String booleanAsStr(boolean flag)
+ {
+ String s;
+ if(flag)
+ s = Boolean.TRUE.toString();
+ else
+ s = Boolean.FALSE.toString();
+ return s;
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/UnsynchronizedAppenderBase.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/UnsynchronizedAppenderBase.java
new file mode 100644
index 0000000..dc02617
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/UnsynchronizedAppenderBase.java
@@ -0,0 +1,132 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core;
+
+import ch.qos.logback.core.filter.Filter;
+import ch.qos.logback.core.spi.ContextAwareBase;
+import ch.qos.logback.core.spi.FilterAttachableImpl;
+import ch.qos.logback.core.spi.FilterReply;
+import ch.qos.logback.core.status.WarnStatus;
+import java.util.List;
+
+// Referenced classes of package ch.qos.logback.core:
+// Appender
+
+public abstract class UnsynchronizedAppenderBase extends ContextAwareBase
+ implements Appender
+{
+
+ public UnsynchronizedAppenderBase()
+ {
+ started = false;
+ guard = new ThreadLocal();
+ fai = new FilterAttachableImpl();
+ statusRepeatCount = 0;
+ exceptionCount = 0;
+ }
+
+ public void addFilter(Filter filter)
+ {
+ fai.addFilter(filter);
+ }
+
+ protected abstract void append(Object obj);
+
+ public void clearAllFilters()
+ {
+ fai.clearAllFilters();
+ }
+
+ public void doAppend(Object obj)
+ {
+ if(!Boolean.TRUE.equals(guard.get())) goto _L2; else goto _L1
+_L1:
+ return;
+_L2:
+ guard.set(Boolean.TRUE);
+ if(started)
+ break MISSING_BLOCK_LABEL_106;
+ int j = statusRepeatCount;
+ statusRepeatCount = j + 1;
+ if(j < 3)
+ addStatus(new WarnStatus((new StringBuilder()).append("Attempted to append to non started appender [").append(name).append("].").toString(), this));
+ guard.set(Boolean.FALSE);
+ goto _L1
+ FilterReply filterreply;
+ FilterReply filterreply1;
+ filterreply = getFilterChainDecision(obj);
+ filterreply1 = FilterReply.DENY;
+label0:
+ {
+ if(filterreply != filterreply1)
+ break label0;
+ guard.set(Boolean.FALSE);
+ }
+ goto _L1
+ append(obj);
+ guard.set(Boolean.FALSE);
+ goto _L1
+ Exception exception1;
+ exception1;
+ int i = exceptionCount;
+ exceptionCount = i + 1;
+ if(i < 3)
+ addError((new StringBuilder()).append("Appender [").append(name).append("] failed to append.").toString(), exception1);
+ guard.set(Boolean.FALSE);
+ goto _L1
+ Exception exception;
+ exception;
+ guard.set(Boolean.FALSE);
+ throw exception;
+ }
+
+ public List getCopyOfAttachedFiltersList()
+ {
+ return fai.getCopyOfAttachedFiltersList();
+ }
+
+ public FilterReply getFilterChainDecision(Object obj)
+ {
+ return fai.getFilterChainDecision(obj);
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public boolean isStarted()
+ {
+ return started;
+ }
+
+ public void setName(String s)
+ {
+ name = s;
+ }
+
+ public void start()
+ {
+ started = true;
+ }
+
+ public void stop()
+ {
+ started = false;
+ }
+
+ public String toString()
+ {
+ return (new StringBuilder()).append(getClass().getName()).append("[").append(name).append("]").toString();
+ }
+
+ static final int ALLOWED_REPEATS = 3;
+ private int exceptionCount;
+ private FilterAttachableImpl fai;
+ private ThreadLocal guard;
+ protected String name;
+ protected boolean started;
+ private int statusRepeatCount;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/android/CommonPathUtil.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/android/CommonPathUtil.java
new file mode 100644
index 0000000..9cab007
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/android/CommonPathUtil.java
@@ -0,0 +1,76 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core.android;
+
+import android.os.Environment;
+import ch.qos.logback.core.util.EnvUtil;
+import ch.qos.logback.core.util.OptionHelper;
+import java.io.File;
+
+public abstract class CommonPathUtil
+{
+
+ public CommonPathUtil()
+ {
+ }
+
+ public static String getAssetsDirectoryPath()
+ {
+ return "assets";
+ }
+
+ public static String getDatabaseDirectoryPath(String s)
+ {
+ String s1;
+ if(EnvUtil.isAndroidOS())
+ s1 = Environment.getDataDirectory().getAbsolutePath();
+ else
+ s1 = "/data";
+ return (new StringBuilder()).append(s1).append("/data/").append(s).append("/databases").toString();
+ }
+
+ public static String getExternalStorageDirectoryPath()
+ {
+ if(!EnvUtil.isAndroidOS()) goto _L2; else goto _L1
+_L1:
+ String s = Environment.getExternalStorageDirectory().getAbsolutePath();
+_L4:
+ return s;
+_L2:
+ s = OptionHelper.getEnv("EXTERNAL_STORAGE");
+ if(s == null)
+ s = "/sdcard";
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ public static String getFilesDirectoryPath(String s)
+ {
+ String s1;
+ if(EnvUtil.isAndroidOS())
+ s1 = Environment.getDataDirectory().getAbsolutePath();
+ else
+ s1 = "/data";
+ return (new StringBuilder()).append(s1).append("/data/").append(s).append("/files").toString();
+ }
+
+ public static String getMountedExternalStorageDirectoryPath()
+ {
+ String s;
+ if(EnvUtil.isAndroidOS())
+ {
+ s = null;
+ String s1 = Environment.getExternalStorageState();
+ if(s1.equals("mounted") || s1.equals("mounted_ro"))
+ s = Environment.getExternalStorageDirectory().getAbsolutePath();
+ } else
+ {
+ s = "/mnt/sdcard";
+ }
+ return s;
+ }
+
+ private static final String ASSETS_DIRECTORY = "assets";
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/android/SystemPropertiesProxy.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/android/SystemPropertiesProxy.java
new file mode 100644
index 0000000..e91dffa
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/android/SystemPropertiesProxy.java
@@ -0,0 +1,115 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core.android;
+
+import java.lang.reflect.Method;
+
+public class SystemPropertiesProxy
+{
+
+ private SystemPropertiesProxy(ClassLoader classloader)
+ {
+ setClassLoader(classloader);
+_L2:
+ return;
+ Exception exception;
+ exception;
+ if(true) goto _L2; else goto _L1
+_L1:
+ }
+
+ public static SystemPropertiesProxy getInstance()
+ {
+ return SINGLETON;
+ }
+
+ public String get(String s, String s1)
+ throws IllegalArgumentException
+ {
+ if(SystemProperties != null && getString != null) goto _L2; else goto _L1
+_L1:
+ s1 = null;
+_L4:
+ return s1;
+_L2:
+ String s2;
+ try
+ {
+ Method method = getString;
+ Class class1 = SystemProperties;
+ Object aobj[] = new Object[2];
+ aobj[0] = s;
+ aobj[1] = s1;
+ s2 = (String)method.invoke(class1, aobj);
+ }
+ catch(IllegalArgumentException illegalargumentexception)
+ {
+ throw illegalargumentexception;
+ }
+ catch(Exception exception)
+ {
+ s2 = null;
+ }
+ if(s2 != null && s2.length() != 0)
+ s1 = s2;
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ public Boolean getBoolean(String s, boolean flag)
+ throws IllegalArgumentException
+ {
+ Boolean boolean1;
+ if(SystemProperties == null || getBoolean == null)
+ {
+ boolean1 = Boolean.valueOf(flag);
+ } else
+ {
+ Boolean boolean2 = Boolean.valueOf(flag);
+ try
+ {
+ Method method = getBoolean;
+ Class class1 = SystemProperties;
+ Object aobj[] = new Object[2];
+ aobj[0] = s;
+ aobj[1] = Boolean.valueOf(flag);
+ boolean1 = (Boolean)method.invoke(class1, aobj);
+ }
+ catch(IllegalArgumentException illegalargumentexception)
+ {
+ throw illegalargumentexception;
+ }
+ catch(Exception exception)
+ {
+ boolean1 = boolean2;
+ }
+ }
+ return boolean1;
+ }
+
+ public void setClassLoader(ClassLoader classloader)
+ throws ClassNotFoundException, SecurityException, NoSuchMethodException
+ {
+ if(classloader == null)
+ classloader = getClass().getClassLoader();
+ SystemProperties = classloader.loadClass("android.os.SystemProperties");
+ Class class1 = SystemProperties;
+ Class aclass[] = new Class[2];
+ aclass[0] = java/lang/String;
+ aclass[1] = java/lang/String;
+ getString = class1.getMethod("get", aclass);
+ Class class2 = SystemProperties;
+ Class aclass1[] = new Class[2];
+ aclass1[0] = java/lang/String;
+ aclass1[1] = Boolean.TYPE;
+ getBoolean = class2.getMethod("getBoolean", aclass1);
+ }
+
+ private static final SystemPropertiesProxy SINGLETON = new SystemPropertiesProxy(null);
+ private Class SystemProperties;
+ private Method getBoolean;
+ private Method getString;
+
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/boolex/EvaluationException.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/boolex/EvaluationException.java
new file mode 100644
index 0000000..2143b62
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/boolex/EvaluationException.java
@@ -0,0 +1,27 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core.boolex;
+
+
+public class EvaluationException extends Exception
+{
+
+ public EvaluationException(String s)
+ {
+ super(s);
+ }
+
+ public EvaluationException(String s, Throwable throwable)
+ {
+ super(s, throwable);
+ }
+
+ public EvaluationException(Throwable throwable)
+ {
+ super(throwable);
+ }
+
+ private static final long serialVersionUID = 1L;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/boolex/EventEvaluator.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/boolex/EventEvaluator.java
new file mode 100644
index 0000000..029addb
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/boolex/EventEvaluator.java
@@ -0,0 +1,23 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core.boolex;
+
+import ch.qos.logback.core.spi.ContextAware;
+import ch.qos.logback.core.spi.LifeCycle;
+
+// Referenced classes of package ch.qos.logback.core.boolex:
+// EvaluationException
+
+public interface EventEvaluator
+ extends ContextAware, LifeCycle
+{
+
+ public abstract boolean evaluate(Object obj)
+ throws NullPointerException, EvaluationException;
+
+ public abstract String getName();
+
+ public abstract void setName(String s);
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/boolex/EventEvaluatorBase.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/boolex/EventEvaluatorBase.java
new file mode 100644
index 0000000..f7fda78
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/boolex/EventEvaluatorBase.java
@@ -0,0 +1,54 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core.boolex;
+
+import ch.qos.logback.core.spi.ContextAwareBase;
+
+// Referenced classes of package ch.qos.logback.core.boolex:
+// EventEvaluator
+
+public abstract class EventEvaluatorBase extends ContextAwareBase
+ implements EventEvaluator
+{
+
+ public EventEvaluatorBase()
+ {
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public boolean isStarted()
+ {
+ return started;
+ }
+
+ public void setName(String s)
+ {
+ if(name != null)
+ {
+ throw new IllegalStateException("name has been already set");
+ } else
+ {
+ name = s;
+ return;
+ }
+ }
+
+ public void start()
+ {
+ started = true;
+ }
+
+ public void stop()
+ {
+ started = false;
+ }
+
+ String name;
+ boolean started;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/encoder/ByteArrayUtil.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/encoder/ByteArrayUtil.java
new file mode 100644
index 0000000..806afd9
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/encoder/ByteArrayUtil.java
@@ -0,0 +1,72 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core.encoder;
+
+import java.io.ByteArrayOutputStream;
+
+public class ByteArrayUtil
+{
+
+ public ByteArrayUtil()
+ {
+ }
+
+ public static byte[] hexStringToByteArray(String s)
+ {
+ byte abyte0[] = new byte[s.length() / 2];
+ for(int i = 0; i < abyte0.length; i++)
+ {
+ int j = i * 2;
+ abyte0[i] = (byte)(0xff & Integer.parseInt(s.substring(j, j + 2), 16));
+ }
+
+ return abyte0;
+ }
+
+ static int readInt(byte abyte0[], int i)
+ {
+ int j = 0;
+ int k = 0;
+ for(; j < 4; j++)
+ {
+ int l = 24 - j * 8;
+ k += (0xff & abyte0[i + j]) << l;
+ }
+
+ return k;
+ }
+
+ public static String toHexString(byte abyte0[])
+ {
+ StringBuffer stringbuffer = new StringBuffer();
+ int i = abyte0.length;
+ for(int j = 0; j < i; j++)
+ {
+ String s = Integer.toHexString(0xff & abyte0[j]);
+ if(s.length() == 1)
+ stringbuffer.append('0');
+ stringbuffer.append(s);
+ }
+
+ return stringbuffer.toString();
+ }
+
+ static void writeInt(ByteArrayOutputStream bytearrayoutputstream, int i)
+ {
+ for(int j = 0; j < 4; j++)
+ bytearrayoutputstream.write((byte)(i >>> 24 - j * 8));
+
+ }
+
+ static void writeInt(byte abyte0[], int i, int j)
+ {
+ for(int k = 0; k < 4; k++)
+ {
+ int l = 24 - k * 8;
+ abyte0[i + k] = (byte)(j >>> l);
+ }
+
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/encoder/EchoEncoder.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/encoder/EchoEncoder.java
new file mode 100644
index 0000000..95c4583
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/encoder/EchoEncoder.java
@@ -0,0 +1,39 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core.encoder;
+
+import ch.qos.logback.core.CoreConstants;
+import java.io.IOException;
+import java.io.OutputStream;
+
+// Referenced classes of package ch.qos.logback.core.encoder:
+// EncoderBase
+
+public class EchoEncoder extends EncoderBase
+{
+
+ public EchoEncoder()
+ {
+ }
+
+ public void close()
+ throws IOException
+ {
+ }
+
+ public void doEncode(Object obj)
+ throws IOException
+ {
+ String s = (new StringBuilder()).append(obj).append(CoreConstants.LINE_SEPARATOR).toString();
+ outputStream.write(s.getBytes());
+ outputStream.flush();
+ }
+
+ public void init(OutputStream outputstream)
+ throws IOException
+ {
+ super.init(outputstream);
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/encoder/Encoder.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/encoder/Encoder.java
new file mode 100644
index 0000000..381514b
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/encoder/Encoder.java
@@ -0,0 +1,24 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core.encoder;
+
+import ch.qos.logback.core.spi.ContextAware;
+import ch.qos.logback.core.spi.LifeCycle;
+import java.io.IOException;
+import java.io.OutputStream;
+
+public interface Encoder
+ extends ContextAware, LifeCycle
+{
+
+ public abstract void close()
+ throws IOException;
+
+ public abstract void doEncode(Object obj)
+ throws IOException;
+
+ public abstract void init(OutputStream outputstream)
+ throws IOException;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/encoder/EncoderBase.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/encoder/EncoderBase.java
new file mode 100644
index 0000000..ed786d8
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/encoder/EncoderBase.java
@@ -0,0 +1,45 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core.encoder;
+
+import ch.qos.logback.core.spi.ContextAwareBase;
+import java.io.IOException;
+import java.io.OutputStream;
+
+// Referenced classes of package ch.qos.logback.core.encoder:
+// Encoder
+
+public abstract class EncoderBase extends ContextAwareBase
+ implements Encoder
+{
+
+ public EncoderBase()
+ {
+ }
+
+ public void init(OutputStream outputstream)
+ throws IOException
+ {
+ outputStream = outputstream;
+ }
+
+ public boolean isStarted()
+ {
+ return started;
+ }
+
+ public void start()
+ {
+ started = true;
+ }
+
+ public void stop()
+ {
+ started = false;
+ }
+
+ protected OutputStream outputStream;
+ protected boolean started;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/encoder/EventObjectInputStream.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/encoder/EventObjectInputStream.java
new file mode 100644
index 0000000..6eae9b2
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/encoder/EventObjectInputStream.java
@@ -0,0 +1,151 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core.encoder;
+
+import java.io.*;
+import java.util.ArrayList;
+import java.util.List;
+
+// Referenced classes of package ch.qos.logback.core.encoder:
+// NonClosableInputStream, ByteArrayUtil
+
+public class EventObjectInputStream extends InputStream
+{
+
+ EventObjectInputStream(InputStream inputstream)
+ throws IOException
+ {
+ buffer = new ArrayList();
+ index = 0;
+ ncis = new NonClosableInputStream(inputstream);
+ }
+
+ private void internalReset()
+ {
+ index = 0;
+ buffer.clear();
+ }
+
+ public int available()
+ throws IOException
+ {
+ return ncis.available();
+ }
+
+ public void close()
+ throws IOException
+ {
+ ncis.realClose();
+ }
+
+ Object getFromBuffer()
+ {
+ Object obj;
+ if(index >= buffer.size())
+ {
+ obj = null;
+ } else
+ {
+ List list = buffer;
+ int i = index;
+ index = i + 1;
+ obj = list.get(i);
+ }
+ return obj;
+ }
+
+ public int read()
+ throws IOException
+ {
+ throw new UnsupportedOperationException("Only the readEvent method is supported.");
+ }
+
+ public Object readEvent()
+ throws IOException
+ {
+ Object obj = getFromBuffer();
+ if(obj == null)
+ {
+ internalReset();
+ int i = readHeader();
+ if(i == -1)
+ {
+ obj = null;
+ } else
+ {
+ readPayload(i);
+ readFooter(i);
+ obj = getFromBuffer();
+ }
+ }
+ return obj;
+ }
+
+ Object readEvents(ObjectInputStream objectinputstream)
+ throws IOException
+ {
+ Object obj1 = objectinputstream.readObject();
+ Object obj = obj1;
+ buffer.add(obj);
+_L2:
+ return obj;
+ ClassNotFoundException classnotfoundexception;
+ classnotfoundexception;
+ ClassNotFoundException classnotfoundexception1;
+ obj = null;
+ classnotfoundexception1 = classnotfoundexception;
+_L3:
+ classnotfoundexception1.printStackTrace();
+ if(true) goto _L2; else goto _L1
+_L1:
+ classnotfoundexception1;
+ goto _L3
+ }
+
+ void readFooter(int i)
+ throws IOException
+ {
+ byte abyte0[] = new byte[8];
+ if(ncis.read(abyte0) == -1)
+ throw new IllegalStateException("Looks like a corrupt stream");
+ if(ByteArrayUtil.readInt(abyte0, 0) != 0x262b5373)
+ throw new IllegalStateException("Looks like a corrupt stream");
+ if(ByteArrayUtil.readInt(abyte0, 4) != (0x262b5373 ^ i))
+ throw new IllegalStateException("Invalid checksum");
+ else
+ return;
+ }
+
+ int readHeader()
+ throws IOException
+ {
+ int i = -1;
+ byte abyte0[] = new byte[16];
+ if(ncis.read(abyte0) != i)
+ {
+ if(ByteArrayUtil.readInt(abyte0, 0) != 0x6e78f671)
+ throw new IllegalStateException("Does not look like data created by ObjectStreamEncoder");
+ i = ByteArrayUtil.readInt(abyte0, 4);
+ if(ByteArrayUtil.readInt(abyte0, 12) != (0x6e78f671 ^ i))
+ throw new IllegalStateException("Invalid checksum");
+ }
+ return i;
+ }
+
+ void readPayload(int i)
+ throws IOException
+ {
+ ArrayList arraylist = new ArrayList(i);
+ ObjectInputStream objectinputstream = new ObjectInputStream(ncis);
+ for(int j = 0; j < i; j++)
+ arraylist.add(readEvents(objectinputstream));
+
+ objectinputstream.close();
+ }
+
+ List buffer;
+ int index;
+ NonClosableInputStream ncis;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/encoder/LayoutWrappingEncoder.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/encoder/LayoutWrappingEncoder.java
new file mode 100644
index 0000000..a76b0c4
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/encoder/LayoutWrappingEncoder.java
@@ -0,0 +1,163 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core.encoder;
+
+import ch.qos.logback.core.CoreConstants;
+import ch.qos.logback.core.Layout;
+import java.io.*;
+import java.nio.charset.Charset;
+
+// Referenced classes of package ch.qos.logback.core.encoder:
+// EncoderBase
+
+public class LayoutWrappingEncoder extends EncoderBase
+{
+
+ public LayoutWrappingEncoder()
+ {
+ immediateFlush = true;
+ }
+
+ private void appendIfNotNull(StringBuilder stringbuilder, String s)
+ {
+ if(s != null)
+ stringbuilder.append(s);
+ }
+
+ private byte[] convertToBytes(String s)
+ {
+ byte abyte1[];
+ if(charset == null)
+ {
+ abyte1 = s.getBytes();
+ } else
+ {
+ byte abyte0[];
+ try
+ {
+ abyte0 = s.getBytes(charset.name());
+ }
+ catch(UnsupportedEncodingException unsupportedencodingexception)
+ {
+ throw new IllegalStateException("An existing charset cannot possibly be unsupported.");
+ }
+ abyte1 = abyte0;
+ }
+ return abyte1;
+ }
+
+ public void close()
+ throws IOException
+ {
+ writeFooter();
+ }
+
+ public void doEncode(Object obj)
+ throws IOException
+ {
+ String s = layout.doLayout(obj);
+ outputStream.write(convertToBytes(s));
+ if(immediateFlush)
+ outputStream.flush();
+ }
+
+ public Charset getCharset()
+ {
+ return charset;
+ }
+
+ public Layout getLayout()
+ {
+ return layout;
+ }
+
+ public void init(OutputStream outputstream)
+ throws IOException
+ {
+ super.init(outputstream);
+ writeHeader();
+ }
+
+ public boolean isImmediateFlush()
+ {
+ return immediateFlush;
+ }
+
+ public boolean isStarted()
+ {
+ return false;
+ }
+
+ public void setCharset(Charset charset1)
+ {
+ charset = charset1;
+ }
+
+ public void setImmediateFlush(boolean flag)
+ {
+ immediateFlush = flag;
+ }
+
+ public void setLayout(Layout layout1)
+ {
+ layout = layout1;
+ }
+
+ public void start()
+ {
+ started = true;
+ }
+
+ public void stop()
+ {
+ started = false;
+ if(outputStream == null)
+ break MISSING_BLOCK_LABEL_19;
+ outputStream.flush();
+_L2:
+ return;
+ IOException ioexception;
+ ioexception;
+ if(true) goto _L2; else goto _L1
+_L1:
+ }
+
+ void writeFooter()
+ throws IOException
+ {
+ if(layout != null && outputStream != null)
+ {
+ StringBuilder stringbuilder = new StringBuilder();
+ appendIfNotNull(stringbuilder, layout.getPresentationFooter());
+ appendIfNotNull(stringbuilder, layout.getFileFooter());
+ if(stringbuilder.length() > 0)
+ {
+ outputStream.write(convertToBytes(stringbuilder.toString()));
+ outputStream.flush();
+ }
+ }
+ }
+
+ void writeHeader()
+ throws IOException
+ {
+ if(layout != null && outputStream != null)
+ {
+ StringBuilder stringbuilder = new StringBuilder();
+ appendIfNotNull(stringbuilder, layout.getFileHeader());
+ appendIfNotNull(stringbuilder, layout.getPresentationHeader());
+ if(stringbuilder.length() > 0)
+ {
+ stringbuilder.append(CoreConstants.LINE_SEPARATOR);
+ outputStream.write(convertToBytes(stringbuilder.toString()));
+ outputStream.flush();
+ }
+ }
+ }
+
+ private Charset charset;
+ private boolean immediateFlush;
+ protected Layout layout;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/encoder/NonClosableInputStream.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/encoder/NonClosableInputStream.java
new file mode 100644
index 0000000..07ab434
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/encoder/NonClosableInputStream.java
@@ -0,0 +1,26 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core.encoder;
+
+import java.io.*;
+
+public class NonClosableInputStream extends FilterInputStream
+{
+
+ NonClosableInputStream(InputStream inputstream)
+ {
+ super(inputstream);
+ }
+
+ public void close()
+ {
+ }
+
+ public void realClose()
+ throws IOException
+ {
+ super.close();
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/encoder/ObjectStreamEncoder.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/encoder/ObjectStreamEncoder.java
new file mode 100644
index 0000000..735abd7
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/encoder/ObjectStreamEncoder.java
@@ -0,0 +1,83 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core.encoder;
+
+import java.io.*;
+import java.util.*;
+
+// Referenced classes of package ch.qos.logback.core.encoder:
+// EncoderBase, ByteArrayUtil
+
+public class ObjectStreamEncoder extends EncoderBase
+{
+
+ public ObjectStreamEncoder()
+ {
+ MAX_BUFFER_SIZE = 100;
+ bufferList = new ArrayList(MAX_BUFFER_SIZE);
+ }
+
+ public void close()
+ throws IOException
+ {
+ writeBuffer();
+ }
+
+ public void doEncode(Object obj)
+ throws IOException
+ {
+ bufferList.add(obj);
+ if(bufferList.size() == MAX_BUFFER_SIZE)
+ writeBuffer();
+ }
+
+ public void init(OutputStream outputstream)
+ throws IOException
+ {
+ super.init(outputstream);
+ bufferList.clear();
+ }
+
+ void writeBuffer()
+ throws IOException
+ {
+ ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream(10000);
+ int i = bufferList.size();
+ writeHeader(bytearrayoutputstream, i);
+ ObjectOutputStream objectoutputstream = new ObjectOutputStream(bytearrayoutputstream);
+ for(Iterator iterator = bufferList.iterator(); iterator.hasNext(); objectoutputstream.writeObject(iterator.next()));
+ bufferList.clear();
+ objectoutputstream.flush();
+ writeFooter(bytearrayoutputstream, i);
+ byte abyte0[] = bytearrayoutputstream.toByteArray();
+ objectoutputstream.close();
+ writeEndPosition(abyte0);
+ outputStream.write(abyte0);
+ }
+
+ void writeEndPosition(byte abyte0[])
+ {
+ ByteArrayUtil.writeInt(abyte0, 8, abyte0.length - 8);
+ }
+
+ void writeFooter(ByteArrayOutputStream bytearrayoutputstream, int i)
+ {
+ ByteArrayUtil.writeInt(bytearrayoutputstream, 0x262b5373);
+ ByteArrayUtil.writeInt(bytearrayoutputstream, 0x262b5373 ^ i);
+ }
+
+ void writeHeader(ByteArrayOutputStream bytearrayoutputstream, int i)
+ {
+ ByteArrayUtil.writeInt(bytearrayoutputstream, 0x6e78f671);
+ ByteArrayUtil.writeInt(bytearrayoutputstream, i);
+ ByteArrayUtil.writeInt(bytearrayoutputstream, 0);
+ ByteArrayUtil.writeInt(bytearrayoutputstream, 0x6e78f671 ^ i);
+ }
+
+ public static final int START_PEBBLE = 0x6e78f671;
+ public static final int STOP_PEBBLE = 0x262b5373;
+ private int MAX_BUFFER_SIZE;
+ List bufferList;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/filter/AbstractMatcherFilter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/filter/AbstractMatcherFilter.java
new file mode 100644
index 0000000..8ca2883
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/filter/AbstractMatcherFilter.java
@@ -0,0 +1,43 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core.filter;
+
+import ch.qos.logback.core.spi.FilterReply;
+
+// Referenced classes of package ch.qos.logback.core.filter:
+// Filter
+
+public abstract class AbstractMatcherFilter extends Filter
+{
+
+ public AbstractMatcherFilter()
+ {
+ onMatch = FilterReply.NEUTRAL;
+ onMismatch = FilterReply.NEUTRAL;
+ }
+
+ public final FilterReply getOnMatch()
+ {
+ return onMatch;
+ }
+
+ public final FilterReply getOnMismatch()
+ {
+ return onMismatch;
+ }
+
+ public final void setOnMatch(FilterReply filterreply)
+ {
+ onMatch = filterreply;
+ }
+
+ public final void setOnMismatch(FilterReply filterreply)
+ {
+ onMismatch = filterreply;
+ }
+
+ protected FilterReply onMatch;
+ protected FilterReply onMismatch;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/filter/EvaluatorFilter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/filter/EvaluatorFilter.java
new file mode 100644
index 0000000..d4890d7
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/filter/EvaluatorFilter.java
@@ -0,0 +1,61 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core.filter;
+
+import ch.qos.logback.core.boolex.EvaluationException;
+import ch.qos.logback.core.boolex.EventEvaluator;
+import ch.qos.logback.core.spi.FilterReply;
+
+// Referenced classes of package ch.qos.logback.core.filter:
+// AbstractMatcherFilter
+
+public class EvaluatorFilter extends AbstractMatcherFilter
+{
+
+ public EvaluatorFilter()
+ {
+ }
+
+ public FilterReply decide(Object obj)
+ {
+ FilterReply filterreply;
+ if(!isStarted() || !evaluator.isStarted())
+ filterreply = FilterReply.NEUTRAL;
+ else
+ try
+ {
+ if(evaluator.evaluate(obj))
+ filterreply = onMatch;
+ else
+ filterreply = onMismatch;
+ }
+ catch(EvaluationException evaluationexception)
+ {
+ addError((new StringBuilder()).append("Evaluator ").append(evaluator.getName()).append(" threw an exception").toString(), evaluationexception);
+ filterreply = FilterReply.NEUTRAL;
+ }
+ return filterreply;
+ }
+
+ public EventEvaluator getEvaluator()
+ {
+ return evaluator;
+ }
+
+ public void setEvaluator(EventEvaluator eventevaluator)
+ {
+ evaluator = eventevaluator;
+ }
+
+ public void start()
+ {
+ if(evaluator != null)
+ super.start();
+ else
+ addError((new StringBuilder()).append("No evaluator set for filter ").append(getName()).toString());
+ }
+
+ EventEvaluator evaluator;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/filter/Filter.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/filter/Filter.java
new file mode 100644
index 0000000..f4480bb
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/filter/Filter.java
@@ -0,0 +1,47 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core.filter;
+
+import ch.qos.logback.core.spi.*;
+
+public abstract class Filter extends ContextAwareBase
+ implements LifeCycle
+{
+
+ public Filter()
+ {
+ start = false;
+ }
+
+ public abstract FilterReply decide(Object obj);
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public boolean isStarted()
+ {
+ return start;
+ }
+
+ public void setName(String s)
+ {
+ name = s;
+ }
+
+ public void start()
+ {
+ start = true;
+ }
+
+ public void stop()
+ {
+ start = false;
+ }
+
+ private String name;
+ boolean start;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/helpers/CyclicBuffer.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/helpers/CyclicBuffer.java
new file mode 100644
index 0000000..545d06a
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/helpers/CyclicBuffer.java
@@ -0,0 +1,158 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core.helpers;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class CyclicBuffer
+{
+
+ public CyclicBuffer(int i)
+ throws IllegalArgumentException
+ {
+ if(i < 1)
+ {
+ throw new IllegalArgumentException((new StringBuilder()).append("The maxSize argument (").append(i).append(") is not a positive integer.").toString());
+ } else
+ {
+ init(i);
+ return;
+ }
+ }
+
+ public CyclicBuffer(CyclicBuffer cyclicbuffer)
+ {
+ maxSize = cyclicbuffer.maxSize;
+ ea = (Object[])new Object[maxSize];
+ System.arraycopy(((Object) (cyclicbuffer.ea)), 0, ((Object) (ea)), 0, maxSize);
+ last = cyclicbuffer.last;
+ first = cyclicbuffer.first;
+ numElems = cyclicbuffer.numElems;
+ }
+
+ private void init(int i)
+ {
+ maxSize = i;
+ ea = (Object[])new Object[i];
+ first = 0;
+ last = 0;
+ numElems = 0;
+ }
+
+ public void add(Object obj)
+ {
+ ea[last] = obj;
+ int i = 1 + last;
+ last = i;
+ if(i == maxSize)
+ last = 0;
+ if(numElems >= maxSize) goto _L2; else goto _L1
+_L1:
+ numElems = 1 + numElems;
+_L4:
+ return;
+_L2:
+ int j = 1 + first;
+ first = j;
+ if(j == maxSize)
+ first = 0;
+ if(true) goto _L4; else goto _L3
+_L3:
+ }
+
+ public List asList()
+ {
+ ArrayList arraylist = new ArrayList();
+ for(int i = 0; i < length(); i++)
+ arraylist.add(get(i));
+
+ return arraylist;
+ }
+
+ public void clear()
+ {
+ init(maxSize);
+ }
+
+ public Object get()
+ {
+ Object obj;
+ if(numElems > 0)
+ {
+ numElems = -1 + numElems;
+ obj = ea[first];
+ ea[first] = null;
+ int i = 1 + first;
+ first = i;
+ if(i == maxSize)
+ first = 0;
+ } else
+ {
+ obj = null;
+ }
+ return obj;
+ }
+
+ public Object get(int i)
+ {
+ Object obj;
+ if(i < 0 || i >= numElems)
+ obj = null;
+ else
+ obj = ea[(i + first) % maxSize];
+ return obj;
+ }
+
+ public int getMaxSize()
+ {
+ return maxSize;
+ }
+
+ public int length()
+ {
+ return numElems;
+ }
+
+ public void resize(int i)
+ {
+ if(i < 0)
+ throw new IllegalArgumentException((new StringBuilder()).append("Negative array size [").append(i).append("] not allowed.").toString());
+ if(i != numElems)
+ {
+ Object aobj[] = (Object[])new Object[i];
+ int j;
+ int k;
+ if(i < numElems)
+ j = i;
+ else
+ j = numElems;
+ for(k = 0; k < j; k++)
+ {
+ aobj[k] = ea[first];
+ ea[first] = null;
+ int l = 1 + first;
+ first = l;
+ if(l == numElems)
+ first = 0;
+ }
+
+ ea = aobj;
+ first = 0;
+ numElems = j;
+ maxSize = i;
+ if(j == i)
+ last = 0;
+ else
+ last = j;
+ }
+ }
+
+ Object ea[];
+ int first;
+ int last;
+ int maxSize;
+ int numElems;
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/helpers/NOPAppender.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/helpers/NOPAppender.java
new file mode 100644
index 0000000..6c712af
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/helpers/NOPAppender.java
@@ -0,0 +1,19 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core.helpers;
+
+import ch.qos.logback.core.AppenderBase;
+
+public final class NOPAppender extends AppenderBase
+{
+
+ public NOPAppender()
+ {
+ }
+
+ protected void append(Object obj)
+ {
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/helpers/ThrowableToStringArray.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/helpers/ThrowableToStringArray.java
new file mode 100644
index 0000000..b022254
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/helpers/ThrowableToStringArray.java
@@ -0,0 +1,66 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core.helpers;
+
+import java.util.LinkedList;
+import java.util.List;
+
+public class ThrowableToStringArray
+{
+
+ public ThrowableToStringArray()
+ {
+ }
+
+ public static String[] convert(Throwable throwable)
+ {
+ LinkedList linkedlist = new LinkedList();
+ extract(linkedlist, throwable, null);
+ return (String[])linkedlist.toArray(new String[0]);
+ }
+
+ private static void extract(List list, Throwable throwable, StackTraceElement astacktraceelement[])
+ {
+ StackTraceElement astacktraceelement1[] = throwable.getStackTrace();
+ int i = findNumberOfCommonFrames(astacktraceelement1, astacktraceelement);
+ list.add(formatFirstLine(throwable, astacktraceelement));
+ for(int j = 0; j < astacktraceelement1.length - i; j++)
+ list.add((new StringBuilder()).append("\tat ").append(astacktraceelement1[j].toString()).toString());
+
+ if(i != 0)
+ list.add((new StringBuilder()).append("\t... ").append(i).append(" common frames omitted").toString());
+ Throwable throwable1 = throwable.getCause();
+ if(throwable1 != null)
+ extract(list, throwable1, astacktraceelement1);
+ }
+
+ private static int findNumberOfCommonFrames(StackTraceElement astacktraceelement[], StackTraceElement astacktraceelement1[])
+ {
+ int i = 0;
+ if(astacktraceelement1 != null)
+ {
+ int j = -1 + astacktraceelement.length;
+ int k = -1 + astacktraceelement1.length;
+ while(j >= 0 && k >= 0 && astacktraceelement[j].equals(astacktraceelement1[k]))
+ {
+ i++;
+ j--;
+ k--;
+ }
+ }
+ return i;
+ }
+
+ private static String formatFirstLine(Throwable throwable, StackTraceElement astacktraceelement[])
+ {
+ String s = "";
+ if(astacktraceelement != null)
+ s = "Caused by: ";
+ String s1 = (new StringBuilder()).append(s).append(throwable.getClass().getName()).toString();
+ if(throwable.getMessage() != null)
+ s1 = (new StringBuilder()).append(s1).append(": ").append(throwable.getMessage()).toString();
+ return s1;
+ }
+}
diff --git a/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/helpers/Transform.java b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/helpers/Transform.java
new file mode 100644
index 0000000..fcdc1a2
--- /dev/null
+++ b/1_6.h12_dev/sonos.jad/src/ch/qos/logback/core/helpers/Transform.java
@@ -0,0 +1,71 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3)
+
+package ch.qos.logback.core.helpers;
+
+
+public class Transform
+{
+
+ public Transform()
+ {
+ }
+
+ public static void appendEscapingCDATA(StringBuilder stringbuilder, String s)
+ {
+ if(s != null) goto _L2; else goto _L1
+_L1:
+ return;
+_L2:
+ int i = s.indexOf("]]>");
+ if(i < 0)
+ {
+ stringbuilder.append(s);
+ continue; /* Loop/switch isn't completed */
+ }
+ int j = 0;
+ for(; i > -1; i = s.indexOf("]]>", j))
+ {
+ stringbuilder.append(s.substring(j, i));
+ stringbuilder.append("]]>]]>= s.length())
+ continue; /* Loop/switch isn't completed */
+ }
+
+ stringbuilder.append(s.substring(j));
+ if(true) goto _L1; else goto _L3
+_L3:
+ }
+
+ public static String escapeTags(String s)
+ {
+ if(s != null && s.length() != 0 && (s.indexOf("<") != -1 || s.indexOf(">") != -1))
+ s = escapeTags(new StringBuffer(s));
+ return s;
+ }
+
+ public static String escapeTags(StringBuffer stringbuffer)
+ {
+ int i = 0;
+ while(i < stringbuffer.length())
+ {
+ char c = stringbuffer.charAt(i);
+ if(c == '<')
+ stringbuffer.replace(i, i + 1, "<");
+ else
+ if(c == '>')
+ stringbuffer.replace(i, i + 1, ">");
+ i++;
+ }
+ return stringbuffer.toString();
+ }
+
+ private static final String CDATA_EMBEDED_END = "]]>]]>";
+ private static final int CDATA_END_LEN = "]]>".length();
+ private static final String CDATA_PSEUDO_END = "]]>";
+ private static final String CDATA_START = "");
+ stringbuilder.append(CoreConstants.LINE_SEPARATOR);
+ while(converter != null)
+ if(computeConverterName(converter) == null)
+ {
+ converter = converter.getNext();
+ } else
+ {
+ stringbuilder.append("");
+ stringbuilder.append(computeConverterName(converter));
+ stringbuilder.append(" | ");
+ stringbuilder.append(CoreConstants.LINE_SEPARATOR);
+ converter = converter.getNext();
+ }
+ stringbuilder.append("");
+ stringbuilder.append(CoreConstants.LINE_SEPARATOR);
+ }
+
+ protected String computeConverterName(Converter converter)
+ {
+ String s = converter.getClass().getSimpleName();
+ int i = s.indexOf("Converter");
+ if(i != -1)
+ s = s.substring(0, i);
+ return s;
+ }
+
+ public String getContentType()
+ {
+ return "text/html";
+ }
+
+ public CssBuilder getCssBuilder()
+ {
+ return cssBuilder;
+ }
+
+ protected abstract Map getDefaultConverterMap();
+
+ public Map getEffectiveConverterMap()
+ {
+ HashMap hashmap = new HashMap();
+ Map map = getDefaultConverterMap();
+ if(map != null)
+ hashmap.putAll(map);
+ Context context = getContext();
+ if(context != null)
+ {
+ Map map1 = (Map)context.getObject("PATTERN_RULE_REGISTRY");
+ if(map1 != null)
+ hashmap.putAll(map1);
+ }
+ return hashmap;
+ }
+
+ public String getFileFooter()
+ {
+ StringBuilder stringbuilder = new StringBuilder();
+ stringbuilder.append(CoreConstants.LINE_SEPARATOR);
+ stringbuilder.append("