From 1ce2a7f1ae7cb70fe3c91e811f33a236f875aedc Mon Sep 17 00:00:00 2001 From: Sebastian Bachmann Date: Wed, 14 Jun 2017 12:04:10 +0200 Subject: [PATCH] auto format code --- androauto.py | 2 - androdd.py | 6 +- androguard/core/analysis/analysis.py | 51 +- androguard/core/analysis/auto.py | 1 + androguard/core/bytecodes/api_permissions.py | 2606 +++++------ androguard/core/bytecodes/apk.py | 60 +- androguard/core/bytecodes/dvm.py | 397 +- androguard/core/bytecodes/dvm_permissions.py | 737 ++-- androguard/core/data/data.py | 52 +- androguard/core/resources/public.py | 3854 ++++++++--------- androguard/decompiler/dad/ast.py | 7 +- androguard/decompiler/dad/basic_blocks.py | 11 - androguard/decompiler/dad/control_flow.py | 9 +- androguard/decompiler/dad/dataflow.py | 4 +- androguard/decompiler/dad/decompile.py | 24 +- androguard/decompiler/dad/graph.py | 6 +- androguard/decompiler/dad/instruction.py | 46 +- androguard/decompiler/dad/node.py | 5 +- androguard/decompiler/dad/opcode_ins.py | 2 +- .../decompiler/dad/tests/dataflow_test.py | 2 +- .../decompiler/dad/tests/dominator_test.py | 2 +- androguard/decompiler/dad/tests/rpo_test.py | 19 +- androguard/decompiler/dad/util.py | 2 +- androguard/decompiler/dad/writer.py | 15 +- androguard/decompiler/decompiler.py | 18 +- androguard/gui/Banners.py | 52 +- androguard/gui/BinViewMode.py | 211 +- androguard/gui/DataModel.py | 61 +- androguard/gui/DisasmViewMode.py | 163 +- androguard/gui/HexViewMode.py | 285 +- androguard/gui/SourceViewMode.py | 29 +- androguard/gui/TextDecorators.py | 91 +- androguard/gui/TextSelection.py | 96 +- androguard/gui/ViewMode.py | 81 +- androguard/gui/annotation.ui | 164 +- androguard/gui/apiwindow.py | 6 +- androguard/gui/binwindow.py | 95 +- androguard/gui/cemu.py | 14 +- androguard/gui/helpers.py | 3 +- androguard/gui/mainwindow.py | 11 +- androguard/gui/methodswindow.py | 8 +- androguard/gui/resourceswindow.py | 2 - androguard/gui/search.ui | 78 +- androguard/gui/sourcewindow.py | 145 +- androguard/gui/stringswindow.py | 4 +- androguard/gui/treewindow.py | 16 +- androguard/gui/xrefwindow.py | 7 +- androguard/misc.py | 7 +- androguard/patch/zipfile.py | 260 +- androguard/session.py | 3 + androgui.py | 1 - tests/test_analysis.py | 2 +- tests/test_apk.py | 2 +- tests/test_arsc.py | 2 +- tests/test_axml.py | 2 +- tests/test_dex.py | 3 +- tests/test_session.py | 2 +- 57 files changed, 4953 insertions(+), 4891 deletions(-) diff --git a/androauto.py b/androauto.py index c4e96dfd..e362b571 100755 --- a/androauto.py +++ b/androauto.py @@ -36,14 +36,12 @@ options = [option_0, option_1] class AndroLog(object): - def __init__(self, id_file, filename): self.id_file = id_file self.filename = filename class AndroTest(auto.DirectoryAndroAnalysis): - def analysis_app(self, log, apkobj, dexobj, adexobj): print(log.id_file, log.filename, apkobj, dexobj, adexobj) diff --git a/androdd.py b/androdd.py index b2801e13..4cc32cfc 100644 --- a/androdd.py +++ b/androdd.py @@ -105,12 +105,12 @@ def export_apps_to_format(filename, if decompiler_type == "dex2jad": vm.set_decompiler(decompiler.DecompilerDex2Jad( vm, androconf.CONF["PATH_DEX2JAR"], androconf.CONF["BIN_DEX2JAR" - ], androconf.CONF["PATH_JAD"], + ], androconf.CONF["PATH_JAD"], androconf.CONF["BIN_JAD"], androconf.CONF["TMP_DIRECTORY"])) elif decompiler_type == "dex2winejad": vm.set_decompiler(decompiler.DecompilerDex2WineJad( vm, androconf.CONF["PATH_DEX2JAR"], androconf.CONF["BIN_DEX2JAR" - ], androconf.CONF["PATH_JAD"], + ], androconf.CONF["PATH_JAD"], androconf.CONF["BIN_WINEJAD"], androconf.CONF["TMP_DIRECTORY"])) elif decompiler_type == "ded": vm.set_decompiler(decompiler.DecompilerDed( @@ -123,7 +123,7 @@ def export_apps_to_format(filename, ], androconf.CONF["PATH_FERNFLOWER"], androconf.CONF[ "BIN_FERNFLOWER" ], androconf.CONF["OPTIONS_FERNFLOWER" - ], androconf.CONF["TMP_DIRECTORY"])) + ], androconf.CONF["TMP_DIRECTORY"])) print("End") diff --git a/androguard/core/analysis/analysis.py b/androguard/core/analysis/analysis.py index 45fc275f..4cd4052f 100644 --- a/androguard/core/analysis/analysis.py +++ b/androguard/core/analysis/analysis.py @@ -1,6 +1,7 @@ from __future__ import print_function from future import standard_library + standard_library.install_aliases() from builtins import str from builtins import range @@ -8,12 +9,12 @@ from builtins import object import re, collections import threading, queue, time - -from androguard.core.androconf import error, warning, debug, is_ascii_problem,\ +from androguard.core.androconf import error, warning, debug, is_ascii_problem, \ load_api_specific_resource_module from androguard.core.bytecodes import dvm from androguard.core.bytecodes.api_permissions import DVM_PERMISSIONS_BY_PERMISSION, DVM_PERMISSIONS_BY_ELEMENT + class DVMBasicBlock(object): """ A simple basic block of a dalvik method @@ -108,7 +109,7 @@ class DVMBasicBlock(object): return self.last_length def set_childs(self, values): - #print self, self.start, self.end, values + # print self, self.start, self.end, values if values == []: next_block = self.context.get_basic_block(self.end + 1) if next_block != None: @@ -162,7 +163,6 @@ class DVMBasicBlock(object): class Enum(object): - def __init__(self, names): self.names = names for value, name in enumerate(self.names): @@ -309,7 +309,6 @@ class BasicBlocks(object): class ExceptionAnalysis(object): - def __init__(self, exception, bb): self.start = exception[0] self.end = exception[1] @@ -340,7 +339,6 @@ class ExceptionAnalysis(object): class Exceptions(object): - def __init__(self, _vm): self.__vm = _vm self.exceptions = [] @@ -514,14 +512,13 @@ class MethodAnalysis(object): class StringAnalysis(object): - def __init__(self, value): self.value = value self.orig_value = value self.xreffrom = set() def AddXrefFrom(self, classobj, methodobj): - #debug("Added strings xreffrom for %s to %s" % (self.value, methodobj)) + # debug("Added strings xreffrom for %s to %s" % (self.value, methodobj)) self.xreffrom.add((classobj, methodobj)) def get_xref_from(self): @@ -540,23 +537,22 @@ class StringAnalysis(object): data = "XREFto for string %s in\n" % repr(self.get_value()) for ref_class, ref_method in self.xreffrom: data += "%s:%s\n" % (ref_class.get_vm_class().get_name(), ref_method - ) + ) return data class MethodClassAnalysis(object): - def __init__(self, method): self.method = method self.xrefto = set() self.xreffrom = set() def AddXrefTo(self, classobj, methodobj, offset): - #debug("Added method xrefto for %s [%s] to %s" % (self.method, classobj, methodobj)) + # debug("Added method xrefto for %s [%s] to %s" % (self.method, classobj, methodobj)) self.xrefto.add((classobj, methodobj, offset)) def AddXrefFrom(self, classobj, methodobj, offset): - #debug("Added method xreffrom for %s [%s] to %s" % (self.method, classobj, methodobj)) + # debug("Added method xreffrom for %s [%s] to %s" % (self.method, classobj, methodobj)) self.xreffrom.add((classobj, methodobj, offset)) def get_xref_from(self): @@ -570,30 +566,29 @@ class MethodClassAnalysis(object): for ref_class, ref_method, offset in self.xrefto: data += "in\n" data += "%s:%s @0x%x\n" % (ref_class.get_vm_class().get_name(), ref_method, offset - ) + ) data += "XREFFrom for %s\n" % self.method for ref_class, ref_method, offset in self.xreffrom: data += "in\n" data += "%s:%s @0x%x\n" % (ref_class.get_vm_class().get_name(), ref_method, offset - ) + ) return data class FieldClassAnalysis(object): - def __init__(self, field): self.field = field self.xrefread = set() self.xrefwrite = set() def AddXrefRead(self, classobj, methodobj): - #debug("Added method xrefto for %s [%s] to %s" % (self.method, classobj, methodobj)) + # debug("Added method xrefto for %s [%s] to %s" % (self.method, classobj, methodobj)) self.xrefread.add((classobj, methodobj)) def AddXrefWrite(self, classobj, methodobj): - #debug("Added method xreffrom for %s [%s] to %s" % (self.method, classobj, methodobj)) + # debug("Added method xreffrom for %s [%s] to %s" % (self.method, classobj, methodobj)) self.xrefwrite.add((classobj, methodobj)) def get_xref_read(self): @@ -607,19 +602,21 @@ class FieldClassAnalysis(object): for ref_class, ref_method in self.xrefread: data += "in\n" data += "%s:%s\n" % (ref_class.get_vm_class().get_name(), ref_method - ) + ) data += "XREFWrite for %s\n" % self.field for ref_class, ref_method in self.xrefwrite: data += "in\n" data += "%s:%s\n" % (ref_class.get_vm_class().get_name(), ref_method - ) + ) return data + REF_NEW_INSTANCE = 0 REF_CLASS_USAGE = 1 + class ExternalClass(object): def __init__(self, name): self.name = name @@ -632,6 +629,7 @@ class ExternalClass(object): return self.methods[key] + class ExternalMethod(object): def __init__(self, class_name, name, descriptor): self.class_name = class_name @@ -650,8 +648,8 @@ class ExternalMethod(object): def __str__(self): return "%s->%s%s" % (self.class_name, self.name, ''.join(self.descriptor)) -class ClassAnalysis(object): +class ClassAnalysis(object): def __init__(self, classobj, internal=False): self.orig_class = classobj self._inherits_methods = {} @@ -745,7 +743,6 @@ class ClassAnalysis(object): class Analysis(object): - def __init__(self, vm): self.vms = [vm] self.classes = {} @@ -827,7 +824,7 @@ class Analysis(object): current_method, off) elif ((op_value >= 0x6e and op_value <= 0x72) or - (op_value >= 0x74 and op_value <= 0x78)): + (op_value >= 0x74 and op_value <= 0x78)): idx_meth = instruction.get_ref_kind() method_info = last_vm.get_cm_method(idx_meth) if method_info: @@ -840,9 +837,10 @@ class Analysis(object): # Seems to be an external classes if not method_item: if method_info[0] not in self.classes: - self.classes[method_info[0]] = ClassAnalysis(ExternalClass(method_info[0]), False) - method_item = self.classes[method_info[0]].GetFakeMethod(method_info[1], method_info[2]) - + self.classes[method_info[0]] = ClassAnalysis(ExternalClass(method_info[0]), + False) + method_item = self.classes[method_info[0]].GetFakeMethod(method_info[1], + method_info[2]) if method_item: self.classes[current_class.get_name( @@ -886,7 +884,7 @@ class Analysis(object): if field_item: # read access to a field if (op_value >= 0x52 and op_value <= 0x58) or ( - op_value >= 0x60 and op_value <= 0x66): + op_value >= 0x60 and op_value <= 0x66): self.classes[current_class.get_name( )].AddFXrefRead( current_method, @@ -959,6 +957,7 @@ class Analysis(object): self.classes[current_class.get_name()] = ClassAnalysis( current_class, True) + def is_ascii_obfuscation(vm): for classe in vm.get_classes(): if is_ascii_problem(classe.get_name()): diff --git a/androguard/core/analysis/auto.py b/androguard/core/analysis/auto.py index eb1bab50..546dff9f 100644 --- a/androguard/core/analysis/auto.py +++ b/androguard/core/analysis/auto.py @@ -1,4 +1,5 @@ from future import standard_library + standard_library.install_aliases() from builtins import range from builtins import object diff --git a/androguard/core/bytecodes/api_permissions.py b/androguard/core/bytecodes/api_permissions.py index aa31bf0a..0238eab1 100644 --- a/androguard/core/bytecodes/api_permissions.py +++ b/androguard/core/bytecodes/api_permissions.py @@ -79,24 +79,24 @@ DVM_PERMISSIONS_BY_PERMISSION = { ("F", "findNextAlarmTime", "(Landroid/content/ContentResolver; J)"), ("F", "query", "(Landroid/content/ContentResolver; [L[Ljava/lang/Strin; Ljava/lang/String; [L[Ljava/lang/Strin; Ljava/lang/String;)" - ), + ), ], "Landroid/provider/Calendar$Calendars;": [ ("F", "query", "(Landroid/content/ContentResolver; [L[Ljava/lang/Strin; Ljava/lang/String; Ljava/lang/String;)" - ), + ), ], "Landroid/provider/Calendar$Events;": [ ("F", "query", "(Landroid/content/ContentResolver; [L[Ljava/lang/Strin; Ljava/lang/String; Ljava/lang/String;)" - ), + ), ("F", "query", "(Landroid/content/ContentResolver; [L[Ljava/lang/Strin;)"), ], "Landroid/provider/Calendar$Instances;": [ ("F", "query", "(Landroid/content/ContentResolver; [L[Ljava/lang/Strin; J J Ljava/lang/String; Ljava/lang/String;)" - ), + ), ("F", "query", "(Landroid/content/ContentResolver; [L[Ljava/lang/Strin; J J)"), ], @@ -112,16 +112,16 @@ DVM_PERMISSIONS_BY_PERMISSION = { "CHANGE_CONFIGURATION": { "Landroid/app/IActivityManager$Stub$Proxy;": [ ("F", "updateConfiguration", "(Landroid/content/res/Configuration;)" - ), + ), ], }, "SET_ACTIVITY_WATCHER": { "Landroid/app/IActivityManager$Stub$Proxy;": [ ("F", "profileControl", "(Ljava/lang/String; B Ljava/lang/String; Landroid/os/ParcelFileDescriptor;)" - ), + ), ("F", "setActivityController", "(Landroid/app/IActivityController;)" - ), + ), ], }, "GET_PACKAGE_SIZE": { @@ -186,7 +186,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { "Landroid/accounts/AccountManager;": [ ("F", "addAccountExplicitly", "(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ("F", "getPassword", "(Landroid/accounts/Account;)"), ("F", "getUserData", "(Landroid/accounts/Account; Ljava/lang/String;)"), @@ -194,15 +194,15 @@ DVM_PERMISSIONS_BY_PERMISSION = { "(Landroid/accounts/Account; Ljava/lang/String;)"), ("F", "setAuthToken", "(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)" - ), + ), ("F", "setPassword", "(Landroid/accounts/Account; Ljava/lang/String;)"), ("F", "setUserData", "(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)" - ), + ), ("F", "addAccountExplicitly", "(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ("F", "getPassword", "(Landroid/accounts/Account;)"), ("F", "getUserData", "(Landroid/accounts/Account; Ljava/lang/String;)"), @@ -210,17 +210,17 @@ DVM_PERMISSIONS_BY_PERMISSION = { "(Landroid/accounts/Account; Ljava/lang/String;)"), ("F", "setAuthToken", "(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)" - ), + ), ("F", "setPassword", "(Landroid/accounts/Account; Ljava/lang/String;)"), ("F", "setUserData", "(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)" - ), + ), ], "Landroid/accounts/AccountManagerService;": [ ("F", "addAccount", "(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ("F", "checkAuthenticateAccountsPermission", "(Landroid/accounts/Account;)"), ("F", "getPassword", "(Landroid/accounts/Account;)"), @@ -230,17 +230,17 @@ DVM_PERMISSIONS_BY_PERMISSION = { "(Landroid/accounts/Account; Ljava/lang/String;)"), ("F", "setAuthToken", "(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)" - ), + ), ("F", "setPassword", "(Landroid/accounts/Account; Ljava/lang/String;)"), ("F", "setUserData", "(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)" - ), + ), ], "Landroid/accounts/IAccountManager$Stub$Proxy;": [ ("F", "addAccount", "(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ("F", "getPassword", "(Landroid/accounts/Account;)"), ("F", "getUserData", "(Landroid/accounts/Account; Ljava/lang/String;)"), @@ -248,12 +248,12 @@ DVM_PERMISSIONS_BY_PERMISSION = { "(Landroid/accounts/Account; Ljava/lang/String;)"), ("F", "setAuthToken", "(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)" - ), + ), ("F", "setPassword", "(Landroid/accounts/Account; Ljava/lang/String;)"), ("F", "setUserData", "(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)" - ), + ), ], }, "CHANGE_BACKGROUND_DATA_SETTING": { @@ -291,7 +291,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { "DISABLE_KEYGUARD": { "Landroid/view/IWindowManager$Stub$Proxy;": [ ("F", "disableKeyguard", "(Landroid/os/IBinder; Ljava/lang/String;)" - ), + ), ("F", "exitKeyguardSecurely", "(Landroid/view/IOnKeyguardExitResult;)"), ("F", "reenableKeyguard", "(Landroid/os/IBinder;)"), @@ -319,7 +319,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { "Landroid/content/pm/IPackageManager$Stub$Proxy;": [ ("F", "deletePackage", "(Ljava/lang/String; Landroid/content/pm/IPackageDeleteObserver; I)" - ), + ), ], }, "CHANGE_COMPONENT_ENABLED_STATE": { @@ -439,7 +439,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { "Landroid/app/NotificationManager;": [ ("F", "notify", "(I Landroid/app/Notification;)"), ("F", "notify", "(Ljava/lang/String; I Landroid/app/Notification;)" - ), + ), ], "Landroid/app/Notification/Builder;": [ ("F", "setDefaults", "(I)"), @@ -508,7 +508,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { "CHANGE_WIFI_STATE": { "Landroid/net/wifi/IWifiManager$Stub$Proxy;": [ ("F", "addOrUpdateNetwork", "(Landroid/net/wifi/WifiConfiguration;)" - ), + ), ("F", "disableNetwork", "(I)"), ("F", "disconnect", "()"), ("F", "enableNetwork", "(I B)"), @@ -519,14 +519,14 @@ DVM_PERMISSIONS_BY_PERMISSION = { ("F", "saveConfiguration", "()"), ("F", "setNumAllowedChannels", "(I B)"), ("F", "setWifiApEnabled", "(Landroid/net/wifi/WifiConfiguration; B)" - ), + ), ("F", "setWifiEnabled", "(B)"), ("F", "startScan", "(B)"), ], "Landroid/net/wifi/WifiManager;": [ ("F", "addNetwork", "(Landroid/net/wifi/WifiConfiguration;)"), ("F", "addOrUpdateNetwork", "(Landroid/net/wifi/WifiConfiguration;)" - ), + ), ("F", "disableNetwork", "(I)"), ("F", "disconnect", "()"), ("F", "enableNetwork", "(I B)"), @@ -537,7 +537,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { ("F", "saveConfiguration", "()"), ("F", "setNumAllowedChannels", "(I B)"), ("F", "setWifiApEnabled", "(Landroid/net/wifi/WifiConfiguration; B)" - ), + ), ("F", "setWifiEnabled", "(B)"), ("F", "startScan", "()"), ("F", "startScanActive", "()"), @@ -549,49 +549,49 @@ DVM_PERMISSIONS_BY_PERMISSION = { ("F", "sendStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyOrderedBroadcast", "(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ], "Landroid/accessibilityservice/AccessibilityService;": [ ("F", "removeStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyOrderedBroadcast", "(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ], "Landroid/accounts/GrantCredentialsPermissionActivity;": [ ("F", "removeStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyOrderedBroadcast", "(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ], "Landroid/app/backup/BackupAgent;": [ ("F", "removeStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyOrderedBroadcast", "(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ], "Landroid/service/wallpaper/WallpaperService;": [ ("F", "removeStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyOrderedBroadcast", "(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ], "Landroid/app/backup/BackupAgentHelper;": [ ("F", "removeStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyOrderedBroadcast", "(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ], "Landroid/accounts/AccountAuthenticatorActivity;": [ ("F", "removeStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyOrderedBroadcast", "(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ], "Landroid/app/IActivityManager$Stub$Proxy;": [ ("F", "unbroadcastIntent", @@ -602,7 +602,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { ("F", "sendStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyOrderedBroadcast", "(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ], "Landroid/content/ContextWrapper;": [ ("F", "removeStickyBroadcast", "(Landroid/content/Intent;)"), @@ -611,28 +611,28 @@ DVM_PERMISSIONS_BY_PERMISSION = { ("F", "sendStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyOrderedBroadcast", "(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ], "Landroid/app/Activity;": [ ("F", "removeStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyOrderedBroadcast", "(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ], "Landroid/app/ContextImpl;": [ ("F", "removeStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyOrderedBroadcast", "(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ], "Landroid/app/AliasActivity;": [ ("F", "removeStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyOrderedBroadcast", "(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ], "Landroid/content/Context;": [ ("F", "removeStickyBroadcast", "(Landroid/content/Intent;)"), @@ -641,87 +641,87 @@ DVM_PERMISSIONS_BY_PERMISSION = { ("F", "sendStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyOrderedBroadcast", "(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ], "Landroid/service/urlrenderer/UrlRendererService;": [ ("F", "removeStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyOrderedBroadcast", "(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ], "Landroid/app/FullBackupAgent;": [ ("F", "removeStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyOrderedBroadcast", "(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ], "Landroid/app/TabActivity;": [ ("F", "removeStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyOrderedBroadcast", "(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ], "Landroid/view/ContextThemeWrapper;": [ ("F", "removeStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyOrderedBroadcast", "(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ], "Landroid/speech/RecognitionService;": [ ("F", "removeStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyOrderedBroadcast", "(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ], "Landroid/app/IntentService;": [ ("F", "removeStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyOrderedBroadcast", "(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ], "Landroid/inputmethodservice/AbstractInputMethodService;": [ ("F", "removeStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyOrderedBroadcast", "(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ], "Landroid/app/Application;": [ ("F", "removeStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyOrderedBroadcast", "(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ("F", "sendStickyOrderedBroadcast", "(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ], "Landroid/app/ListActivity;": [ ("F", "removeStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyOrderedBroadcast", "(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ], "Landroid/app/Service;": [ ("F", "removeStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyOrderedBroadcast", "(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ], "Landroid/content/MutableContextWrapper;": [ ("F", "removeStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyBroadcast", "(Landroid/content/Intent;)"), ("F", "sendStickyOrderedBroadcast", "(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ], }, "FORCE_STOP_PACKAGES": { @@ -1111,85 +1111,85 @@ DVM_PERMISSIONS_BY_PERMISSION = { "Landroid/accounts/AccountManager;": [ ("F", "addAccount", "(Ljava/lang/String; Ljava/lang/String; [Ljava/lang/String; Landroid/os/Bundle; Landroid/app/Activity; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)" - ), + ), ("F", "clearPassword", "(Landroid/accounts/Account;)"), ("F", "confirmCredentials", "(Landroid/accounts/Account; Landroid/os/Bundle; Landroid/app/Activity; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)" - ), + ), ("F", "editProperties", "(Ljava/lang/String; Landroid/app/Activity; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)" - ), + ), ("F", "getAuthTokenByFeatures", "(Ljava/lang/String; Ljava/lang/String; [Ljava/lang/String; Landroid/app/Activity; Landroid/os/Bundle; Landroid/os/Bundle; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)" - ), + ), ("F", "invalidateAuthToken", "(Ljava/lang/String; Ljava/lang/String;)"), ("F", "removeAccount", "(Landroid/accounts/Account; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)" - ), + ), ("F", "updateCredentials", "(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle; Landroid/app/Activity; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)" - ), + ), ("F", "addAccount", "(Ljava/lang/String; Ljava/lang/String; [L[Ljava/lang/Strin; Landroid/os/Bundle; Landroid/app/Activity; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)" - ), + ), ("F", "clearPassword", "(Landroid/accounts/Account;)"), ("F", "confirmCredentials", "(Landroid/accounts/Account; Landroid/os/Bundle; Landroid/app/Activity; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)" - ), + ), ("F", "editProperties", "(Ljava/lang/String; Landroid/app/Activity; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)" - ), + ), ("F", "invalidateAuthToken", "(Ljava/lang/String; Ljava/lang/String;)"), ("F", "removeAccount", "(Landroid/accounts/Account; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)" - ), + ), ("F", "updateCredentials", "(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle; Landroid/app/Activity; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)" - ), + ), ], "Landroid/accounts/AccountManagerService;": [ ("F", "addAcount", "(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; Ljava/lang/String; [L[Ljava/lang/Strin; B Landroid/os/Bundle;)" - ), + ), ("F", "checkManageAccountsOrUseCredentialsPermissions", "()"), ("F", "checkManageAccountsPermission", "()"), ("F", "clearPassword", "(Landroid/accounts/Account;)"), ("F", "confirmCredentials", "(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Landroid/os/Bundle; B)" - ), + ), ("F", "editProperties", "(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; B)" - ), + ), ("F", "invalidateAuthToken", "(Ljava/lang/String; Ljava/lang/String;)"), ("F", "removeAccount", "(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account;)" - ), + ), ("F", "updateCredentials", "(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Ljava/lang/String; B Landroid/os/Bundle;)" - ), + ), ], "Landroid/accounts/IAccountManager$Stub$Proxy;": [ ("F", "addAcount", "(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; Ljava/lang/String; [L[Ljava/lang/Strin; B Landroid/os/Bundle;)" - ), + ), ("F", "clearPassword", "(Landroid/accounts/Account;)"), ("F", "confirmCredentials", "(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Landroid/os/Bundle; B)" - ), + ), ("F", "editProperties", "(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; B)" - ), + ), ("F", "invalidateAuthToken", "(Ljava/lang/String; Ljava/lang/String;)"), ("F", "removeAccount", "(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account;)" - ), + ), ("F", "updateCredentials", "(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Ljava/lang/String; B Landroid/os/Bundle;)" - ), + ), ], }, "WRITE_CALENDAR": { @@ -1199,7 +1199,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { "Landroid/provider/Calendar$Calendars;": [ ("F", "delete", "(Landroid/content/ContentResolver; Ljava/lang/String; [L[Ljava/lang/Strin;)" - ), + ), ("F", "deleteCalendarsForAccount", "(Landroid/content/ContentResolver; Landroid/accounts/Account;)"), ], @@ -1228,29 +1228,29 @@ DVM_PERMISSIONS_BY_PERMISSION = { "(LIntentFilter; I [LComponentName; LComponentName;)"), ("F", "addPreferredActivity", "(Landroid/content/IntentFilter; I [Landroid/content/ComponentName; Landroid/content/ComponentName;)" - ), + ), ("F", "clearPackagePreferredActivities", "(Ljava/lang/String;)"), ("F", "replacePreferredActivity", "(Landroid/content/IntentFilter; I [Landroid/content/ComponentName; Landroid/content/ComponentName;)" - ), + ), ], "Landroid/content/pm/PackageManager;": [ ("F", "addPreferredActivity", "(Landroid/content/IntentFilter; I [Landroid/content/ComponentName; Landroid/content/ComponentName;)" - ), + ), ("F", "clearPackagePreferredActivities", "(Ljava/lang/String;)"), ("F", "replacePreferredActivity", "(Landroid/content/IntentFilter; I [Landroid/content/ComponentName; Landroid/content/ComponentName;)" - ), + ), ], "Landroid/content/pm/IPackageManager$Stub$Proxy;": [ ("F", "addPreferredActivity", "(Landroid/content/IntentFilter; I [L[Landroid/content/ComponentNam; Landroid/content/ComponentName;)" - ), + ), ("F", "clearPackagePreferredActivities", "(Ljava/lang/String;)"), ("F", "replacePreferredActivity", "(Landroid/content/IntentFilter; I [L[Landroid/content/ComponentNam; Landroid/content/ComponentName;)" - ), + ), ], }, "NFC": { @@ -1278,7 +1278,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { ("F", "disableForegroundNdefPush", "(Landroid/app/Activity;)"), ("F", "enableForegroundDispatch", "(Landroid/app/Activity; Landroid/app/PendingIntent; [Landroid/content/IntentFilter; [[Ljava/lang/String[];)" - ), + ), ("F", "enableForegroundNdefPush", "(Landroid/app/Activity; Landroid/nfc/NdefMessage;)"), ("F", "getDefaultAdapter", "()"), @@ -1403,55 +1403,55 @@ DVM_PERMISSIONS_BY_PERMISSION = { ("F", "", "(Lorg/apache/http/params/HttpParams;)"), ("F", "", "(Lorg/apache/http/conn/ClientConnectionManager; Lorg/apache/http/params/HttpParams;)" - ), + ), ("F", "execute", "(Lorg/apache/http/client/methods/HttpUriRequest;)" - ), + ), ("F", "execute", "(Lorg/apache/http/client/methods/HttpUriRequest; Lorg/apache/http/client/ResponseHandler; Lorg/apache/http/protocol/HttpContext;)" - ), + ), ("F", "execute", "(Lorg/apache/http/HttpHost; Lorg/apache/http/client/methods/HttpUriRequest; Lorg/apache/http/client/ResponseHandler; Lorg/apache/http/protocol/HttpContext;)" - ), + ), ("F", "execute", "(Lorg/apache/http/client/methods/HttpUriRequest; Lorg/apache/http/protocol/HttpContext;)" - ), + ), ("F", "execute", "(Lorg/apache/http/client/methods/HttpUriRequest; Lorg/apache/http/client/ResponseHandler;)" - ), + ), ("F", "execute", "(Lorg/apache/http/HttpHost; Lorg/apache/http/client/methods/HttpUriRequest; Lorg/apache/http/client/ResponseHandler;)" - ), + ), ("F", "execute", "(Lorg/apache/http/HttpHost; Lorg/apache/http/client/methods/HttpUriRequest;)" - ), + ), ("F", "execute", "(Lorg/apache/http/HttpHost; Lorg/apache/http/client/methods/HttpUriRequest; Lorg/apache/http/protocol/HttpContext;)" - ), + ), ], "Lorg/apache/http/impl/client/HttpClient;": [ ("F", "execute", "(Lorg/apache/http/client/methods/HttpUriRequest;)" - ), + ), ("F", "execute", "(Lorg/apache/http/client/methods/HttpUriRequest; Lorg/apache/http/client/ResponseHandler; Lorg/apache/http/protocol/HttpContext;)" - ), + ), ("F", "execute", "(Lorg/apache/http/HttpHost; Lorg/apache/http/client/methods/HttpUriRequest; Lorg/apache/http/client/ResponseHandler; Lorg/apache/http/protocol/HttpContext;)" - ), + ), ("F", "execute", "(Lorg/apache/http/client/methods/HttpUriRequest; Lorg/apache/http/protocol/HttpContext;)" - ), + ), ("F", "execute", "(Lorg/apache/http/client/methods/HttpUriRequest; Lorg/apache/http/client/ResponseHandler;)" - ), + ), ("F", "execute", "(Lorg/apache/http/HttpHost; Lorg/apache/http/client/methods/HttpUriRequest; Lorg/apache/http/client/ResponseHandler;)" - ), + ), ("F", "execute", "(Lorg/apache/http/HttpHost; Lorg/apache/http/client/methods/HttpUriRequest;)" - ), + ), ("F", "execute", "(Lorg/apache/http/HttpHost; Lorg/apache/http/client/methods/HttpUriRequest; Lorg/apache/http/protocol/HttpContext;)" - ), + ), ], "Lcom/android/http/multipart/Part;": [ ("F", "send", "(Ljava/io/OutputStream;)"), @@ -1468,7 +1468,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { "Landroid/webkit/WebViewCore;": [ ("F", "", "(Landroid/content/Context; Landroid/webkit/WebView; Landroid/webkit/CallbackProxy; Ljava/util/Map;)" - ), + ), ], "Ljava/net/URLConnection;": [ ("F", "connect", "()"), @@ -1532,7 +1532,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { "Landroid/webkit/WebChromeClient;": [ ("F", "onGeolocationPermissionsShowPrompt", "(Ljava/lang/String; Landroid/webkit/GeolocationPermissions/Callback;)" - ), + ), ], "Landroid/location/LocationManager;": [ ("C", "GPS_PROVIDER", "Ljava/lang/String;"), @@ -1546,7 +1546,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { "(Ljava/lang/String; J F Landroid/app/PendingIntent;)"), ("F", "_requestLocationUpdates", "(Ljava/lang/String; J F Landroid/location/LocationListener; Landroid/os/Looper;)" - ), + ), ("F", "addGpsStatusListener", "(Landroid/location/GpsStatus$Listener;)"), ("F", "addNmeaListener", @@ -1563,7 +1563,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { "(Ljava/lang/String; J F Landroid/app/PendingIntent;)"), ("F", "requestLocationUpdates", "(Ljava/lang/String; J F Landroid/location/LocationListener; Landroid/os/Looper;)" - ), + ), ("F", "requestLocationUpdates", "(Ljava/lang/String; J F Landroid/location/LocationListener;)"), ("F", "sendExtraCommand", @@ -1606,7 +1606,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { "Landroid/provider/Telephony$Sms$Inbox;": [ ("F", "addMessage", "(Landroid/content/ContentResolver; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/Long; B)" - ), + ), ], "Landroid/provider/Telephony$Threads;": [ ("F", "getOrCreateThreadId", @@ -1617,24 +1617,24 @@ DVM_PERMISSIONS_BY_PERMISSION = { "Landroid/provider/Telephony$Mms;": [ ("F", "query", "(Landroid/content/ContentResolver; [L[Ljava/lang/Strin; Ljava/lang/String; Ljava/lang/String;)" - ), + ), ("F", "query", "(Landroid/content/ContentResolver; [L[Ljava/lang/Strin;)"), ], "Landroid/provider/Telephony$Sms$Draft;": [ ("F", "addMessage", "(Landroid/content/ContentResolver; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/Long;)" - ), + ), ], "Landroid/provider/Telephony$Sms$Sent;": [ ("F", "addMessage", "(Landroid/content/ContentResolver; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/Long;)" - ), + ), ], "Landroid/provider/Telephony$Sms;": [ ("F", "query", "(Landroid/content/ContentResolver; [L[Ljava/lang/Strin; Ljava/lang/String; Ljava/lang/String;)" - ), + ), ("F", "query", "(Landroid/content/ContentResolver; [L[Ljava/lang/Strin;)"), ], @@ -1751,7 +1751,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { "Lcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;": [ ("F", "listen", "(Ljava/lang/String; Lcom/android/internal/telephony/IPhoneStateListener; I B)" - ), + ), ], "Landroid/telephony/PhoneNumberUtils;": [ ("F", "isVoiceMailNumber", "(Ljava/lang/String;)"), @@ -1780,14 +1780,14 @@ DVM_PERMISSIONS_BY_PERMISSION = { "(Landroid/content/ContentResolver; Ljava/lang/String; J)"), ("F", "putString", "(Landroid/content/ContentResolver; Ljava/lang/String; Ljava/lang/String;)" - ), + ), ("F", "setLocationProviderEnabled", "(Landroid/content/ContentResolver; Ljava/lang/String; B)"), ], "Landroid/provider/Settings$Bookmarks;": [ ("F", "add", "(Landroid/content/ContentResolver; Landroid/content/Intent; Ljava/lang/String; Ljava/lang/String; C I)" - ), + ), ("F", "getIntentForShortcut", "(Landroid/content/ContentResolver; C)"), ], @@ -1798,7 +1798,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { "Landroid/provider/Settings$System;": [ ("F", "putConfiguration", "(Landroid/content/ContentResolver; Landroid/content/res/Configuration;)" - ), + ), ("F", "putFloat", "(Landroid/content/ContentResolver; Ljava/lang/String; F)"), ("F", "putInt", @@ -1807,7 +1807,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { "(Landroid/content/ContentResolver; Ljava/lang/String; J)"), ("F", "putString", "(Landroid/content/ContentResolver; Ljava/lang/String; Ljava/lang/String;)" - ), + ), ("F", "setShowGTalkServiceStatus", "(Landroid/content/ContentResolver; B)"), ], @@ -1825,7 +1825,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { "Landroid/content/ContentService;": [ ("F", "dump", "(Ljava/io/FileDescriptor; Ljava/io/PrintWriter; [L[Ljava/lang/Strin;)" - ), + ), ], "Landroid/view/IWindowManager$Stub$Proxy;": [ ("F", "isViewServerRunning", "()"), @@ -1835,7 +1835,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { "Landroid/os/Debug;": [ ("F", "dumpService", "(Ljava/lang/String; Ljava/io/FileDescriptor; [Ljava/lang/String;)" - ), + ), ], "Landroid/os/IBinder;": [ ("C", "DUMP_TRANSACTION", "I"), @@ -1843,7 +1843,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { "Lcom/android/server/WallpaperManagerService;": [ ("F", "dump", "(Ljava/io/FileDescriptor; Ljava/io/PrintWriter; [L[Ljava/lang/Stri;)" - ), + ), ], }, "USE_CREDENTIALS": { @@ -1852,30 +1852,30 @@ DVM_PERMISSIONS_BY_PERMISSION = { "(Landroid/accounts/Account; Ljava/lang/String; B)"), ("F", "getAuthToken", "(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle; Landroid/app/Activity; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)" - ), + ), ("F", "getAuthToken", "(Landroid/accounts/Account; Ljava/lang/String; B Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)" - ), + ), ("F", "invalidateAuthToken", "(Ljava/lang/String; Ljava/lang/String;)"), ("F", "blockingGetAuthToken", "(Landroid/accounts/Account; Ljava/lang/String; B)"), ("F", "getAuthToken", "(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle; Landroid/app/Activity; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)" - ), + ), ("F", "getAuthToken", "(Landroid/accounts/Account; Ljava/lang/String; B Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)" - ), + ), ], "Landroid/accounts/AccountManagerService;": [ ("F", "getAuthToken", "(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Ljava/lang/String; B B Landroid/os/Bundle;)" - ), + ), ], "Landroid/accounts/IAccountManager$Stub$Proxy;": [ ("F", "getAuthToken", "(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Ljava/lang/String; B B Landroid/os/Bundle;)" - ), + ), ], }, "UPDATE_DEVICE_STATS": { @@ -1919,48 +1919,48 @@ DVM_PERMISSIONS_BY_PERMISSION = { ("F", "getDefault", "()"), ("F", "sendDataMessage", "(Ljava/lang/String; Ljava/lang/String; S [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)" - ), + ), ("F", "sendTextMessage", "(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)" - ), + ), ("F", "sendDataMessage", "(Ljava/lang/String; Ljava/lang/String; S [L; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)" - ), + ), ("F", "sendMultipartTextMessage", "(Ljava/lang/String; Ljava/lang/String; Ljava/util/ArrayList; Ljava/util/ArrayList; Ljava/util/ArrayList;)" - ), + ), ("F", "sendTextMessage", "(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)" - ), + ), ], "Landroid/telephony/SmsManager;": [ ("F", "getDefault", "()"), ("F", "sendDataMessage", "(Ljava/lang/String; Ljava/lang/String; S [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)" - ), + ), ("F", "sendTextMessage", "(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)" - ), + ), ("F", "sendDataMessage", "(Ljava/lang/String; Ljava/lang/String; S [L; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)" - ), + ), ("F", "sendMultipartTextMessage", "(Ljava/lang/String; Ljava/lang/String; Ljava/util/ArrayList; Ljava/util/ArrayList; Ljava/util/ArrayList;)" - ), + ), ("F", "sendTextMessage", "(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)" - ), + ), ], "Lcom/android/internal/telephony/ISms$Stub$Proxy;": [ ("F", "sendData", "(Ljava/lang/String; Ljava/lang/String; I [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)" - ), + ), ("F", "sendMultipartText", "(Ljava/lang/String; Ljava/lang/String; Ljava/util/List; Ljava/util/List; Ljava/util/List;)" - ), + ), ("F", "sendText", "(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)" - ), + ), ], }, "WRITE_USER_DICTIONARY": { @@ -1990,7 +1990,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { "Landroid/view/IWindowSession$Stub$Proxy;": [ ("F", "add", "(Landroid/view/IWindow; Landroid/view/WindowManager$LayoutParams; I Landroid/graphics/Rect;)" - ), + ), ], }, "CHANGE_WIFI_MULTICAST_STATE": { @@ -2025,13 +2025,13 @@ DVM_PERMISSIONS_BY_PERMISSION = { }, "WRITE_CONTACTS": { "Lcom/android/internal/telephony/IccPhoneBookInterfaceManager$Stub$Proxy;": - [ - ("F", "updateAdnRecordsInEfByIndex", - "(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)"), - ("F", "updateAdnRecordsInEfBySearch", - "(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)" - ), - ], + [ + ("F", "updateAdnRecordsInEfByIndex", + "(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)"), + ("F", "updateAdnRecordsInEfBySearch", + "(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)" + ), + ], "Landroid/provider/Contacts$People;": [ ("F", "addToGroup", "(Landroid/content/ContentResolver; J J)"), ], @@ -2041,14 +2041,14 @@ DVM_PERMISSIONS_BY_PERMISSION = { "Landroid/provider/Contacts$Settings;": [ ("F", "setSetting", "(Landroid/content/ContentResolver; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)" - ), + ), ], "Lcom/android/internal/telephony/IIccPhoneBook$Stub$Proxy;": [ ("F", "updateAdnRecordsInEfByIndex", "(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)"), ("F", "updateAdnRecordsInEfBySearch", "(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)" - ), + ), ], "Landroid/provider/CallLog$Calls;": [ ("F", "removeExpiredEntries", "(Landroid/content/Context;)"), @@ -2107,12 +2107,12 @@ DVM_PERMISSIONS_BY_PERMISSION = { ("F", "notifyDataActivity", "(I)"), ("F", "notifyDataConnection", "(I B Ljava/lang/String; Ljava/lang/String; [Ljava/lang/String; Ljava/lang/String; I)" - ), + ), ("F", "notifyDataConnectionFailed", "(Ljava/lang/String;)"), ("F", "notifyMessageWaitingChanged", "(B)"), ("F", "notifyServiceState", "(Landroid/telephony/ServiceState;)"), ("F", "notifySignalStrength", "(Landroid/telephony/SignalStrength;)" - ), + ), ], }, "MOUNT_FORMAT_FILESYSTEMS": { @@ -2127,7 +2127,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { "Landroid/net/Downloads$DownloadBase;": [ ("F", "startDownloadByUri", "(Landroid/content/Context; Ljava/lang/String; Ljava/lang/String; B I B B Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)" - ), + ), ], "Landroid/net/Downloads$ByUri;": [ ("F", "getCurrentOtaDownloads", @@ -2137,10 +2137,10 @@ DVM_PERMISSIONS_BY_PERMISSION = { "(Landroid/content/Context; Ljava/lang/String; J)"), ("F", "removeAllDownloadsByPackage", "(Landroid/content/Context; Ljava/lang/String; Ljava/lang/String;)" - ), + ), ("F", "startDownloadByUri", "(Landroid/content/Context; Ljava/lang/String; Ljava/lang/String; B I B B Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)" - ), + ), ], "Landroid/net/Downloads$ById;": [ ("F", "deleteDownload", "(Landroid/content/Context; J)"), @@ -2151,7 +2151,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { ("F", "openDownloadStream", "(Landroid/content/Context; J)"), ("F", "startDownloadByUri", "(Landroid/content/Context; Ljava/lang/String; Ljava/lang/String; B I B B Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)" - ), + ), ], }, "READ_INPUT_STATE": { @@ -2240,18 +2240,18 @@ DVM_PERMISSIONS_BY_PERMISSION = { "MOVE_PACKAGE": { "Landroid/app/ContextImpl$ApplicationPackageManager;": [ ("F", "movePackage", "(Ljava/lang/String; LIPackageMoveObserver; I)" - ), + ), ("F", "movePackage", "(Ljava/lang/String; LIPackageMoveObserver; I)" - ), + ), ], "Landroid/content/pm/PackageManager;": [ ("F", "movePackage", "(Ljava/lang/String; LIPackageMoveObserver; I)" - ), + ), ], "Landroid/content/pm/IPackageManager$Stub$Proxy;": [ ("F", "movePackage", "(Ljava/lang/String; Landroid/content/pm/IPackageMoveObserver; I)" - ), + ), ], }, "ACCESS_WIMAX_STATE": { @@ -2295,7 +2295,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { "Landroid/webkit/WebIconDatabase;": [ ("F", "bulkRequestIconForPageUrl", "(Landroid/content/ContentResolver; Ljava/lang/String; Landroid/webkit/WebIconDatabase$IconListener;)" - ), + ), ], "Landroid/provider/Browser;": [ ("C", "BOOKMARKS_URI", "Landroid/net/Uri;"), @@ -2307,7 +2307,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { ("F", "getAllVisitedUrls", "(Landroid/content/ContentResolver;)"), ("F", "requestAllIcons", "(Landroid/content/ContentResolver; Ljava/lang/String; Landroid/webkit/WebIconDatabase/IconListener;)" - ), + ), ("F", "truncateHistory", "(Landroid/content/ContentResolver;)"), ("F", "updateVisitedHistory", "(Landroid/content/ContentResolver; Ljava/lang/String; B)"), @@ -2328,7 +2328,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { "(Landroid/content/ContentResolver; Ljava/lang/String;)"), ("F", "requestAllIcons", "(Landroid/content/ContentResolver; Ljava/lang/String; Landroid/webkit/WebIconDatabase$IconListener;)" - ), + ), ("F", "truncateHistory", "(Landroid/content/ContentResolver;)"), ("F", "updateVisitedHistory", "(Landroid/content/ContentResolver; Ljava/lang/String; B)"), @@ -2437,7 +2437,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { ("F", "disable", "(I)"), ("F", "removeIcon", "(Landroid/os/IBinder;)"), ("F", "updateIcon", "(Landroid/os/IBinder; Ljava/lang/String; I I)" - ), + ), ], "Landroid/view/WindowManager/LayoutParams;": [ ("C", "TYPE_STATUS_BAR", "I"), @@ -2451,7 +2451,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { ("F", "removeIcon", "(Landroid/os/IBinder;)"), ("F", "updateIcon", "(Landroid/os/IBinder; Ljava/lang/String; Ljava/lang/String; I I)" - ), + ), ], }, "SHUTDOWN": { @@ -2497,7 +2497,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { ("C", "ACTION_PLAYING_STATE_CHANGED", "Ljava/lang/String;"), ("F", "getConnectedDevices", "()"), ("F", "getConnectionState", "(Landroid/bluetooth/BluetoothDevice;)" - ), + ), ("F", "getDevicesMatchingConnectionStates", "([I)"), ("F", "isA2dpPlaying", "(Landroid/bluetooth/BluetoothDevice;)"), ("F", "getConnectedSinks", "()"), @@ -2539,10 +2539,10 @@ DVM_PERMISSIONS_BY_PERMISSION = { "Landroid/bluetooth/IBluetooth$Stub$Proxy;": [ ("F", "addRfcommServiceRecord", "(Ljava/lang/String; Landroid/os/ParcelUuid; I Landroid/os/IBinder;)" - ), + ), ("F", "fetchRemoteUuids", "(Ljava/lang/String; Landroid/os/ParcelUuid; Landroid/bluetooth/IBluetoothCallback;)" - ), + ), ("F", "getAddress", "()"), ("F", "getBluetoothState", "()"), ("F", "getBondState", "(Ljava/lang/String;)"), @@ -2599,7 +2599,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { "Landroid/bluetooth/BluetoothProfile;": [ ("F", "getConnectedDevices", "()"), ("F", "getConnectionState", "(Landroid/bluetooth/BluetoothDevice;)" - ), + ), ("F", "getDevicesMatchingConnectionStates", "([I)"), ], "Landroid/bluetooth/BluetoothHeadset;": [ @@ -2608,7 +2608,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { ("C", "ACTION_VENDOR_SPECIFIC_HEADSET_EVENT", "Ljava/lang/String;"), ("F", "getConnectedDevices", "()"), ("F", "getConnectionState", "(Landroid/bluetooth/BluetoothDevice;)" - ), + ), ("F", "getDevicesMatchingConnectionStates", "([I)"), ("F", "isAudioConnected", "(Landroid/bluetooth/BluetoothDevice;)"), ("F", "startVoiceRecognition", @@ -2680,10 +2680,10 @@ DVM_PERMISSIONS_BY_PERMISSION = { "(Ljava/lang/String; [L[Ljava/lang/Strin;)"), ("F", "addRfcommServiceRecord", "(Ljava/lang/String; Landroid/os/ParcelUuid; I Landroid/os/IBinder;)" - ), + ), ("F", "fetchRemoteUuids", "(Ljava/lang/String; Landroid/os/ParcelUuid; Landroid/bluetooth/IBluetoothCallback;)" - ), + ), ("F", "getAddress", "()"), ("F", "getAddressFromObjectPath", "(Ljava/lang/String;)"), ("F", "getAllProperties", "()"), @@ -2710,7 +2710,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { ("F", "setPropertyBoolean", "(Ljava/lang/String; B)"), ("F", "setPropertyInteger", "(Ljava/lang/String; I)"), ("F", "setPropertyString", "(Ljava/lang/String; Ljava/lang/String;)" - ), + ), ("F", "updateDeviceServiceChannelCache", "(Ljava/lang/String;)"), ("F", "updateRemoteDevicePropertiesCache", "(Ljava/lang/String;)"), ], @@ -2753,22 +2753,22 @@ DVM_PERMISSIONS_BY_PERMISSION = { "Landroid/provider/Telephony$Sms;": [ ("F", "addMessageToUri", "(Landroid/content/ContentResolver; Landroid/net/Uri; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/Long; B B J)" - ), + ), ("F", "addMessageToUri", "(Landroid/content/ContentResolver; Landroid/net/Uri; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/Long; B B)" - ), + ), ("F", "moveMessageToFolder", "(Landroid/content/Context; Landroid/net/Uri; I I)"), ], "Landroid/provider/Telephony$Sms$Outbox;": [ ("F", "addMessage", "(Landroid/content/ContentResolver; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/Long; B J)" - ), + ), ], "Landroid/provider/Telephony$Sms$Draft;": [ ("F", "saveMessage", "(Landroid/content/ContentResolver; Landroid/net/Uri; Ljava/lang/String;)" - ), + ), ], }, "SET_PROCESS_LIMIT": { @@ -2839,13 +2839,13 @@ DVM_PERMISSIONS_BY_PERMISSION = { ("F", "setAppOrientation", "(Landroid/view/IApplicationToken; I)"), ("F", "setAppStartingWindow", "(Landroid/os/IBinder; Ljava/lang/String; I Ljava/lang/CharSequence; I I Landroid/os/IBinder; B)" - ), + ), ("F", "setAppVisibility", "(Landroid/os/IBinder; B)"), ("F", "setAppWillBeHidden", "(Landroid/os/IBinder;)"), ("F", "setEventDispatching", "(B)"), ("F", "setFocusedApp", "(Landroid/os/IBinder; B)"), ("F", "setNewConfiguration", "(Landroid/content/res/Configuration;)" - ), + ), ("F", "startAppFreezingScreen", "(Landroid/os/IBinder; I)"), ("F", "stopAppFreezingScreen", "(Landroid/os/IBinder; B)"), ("F", "updateOrientationFromAppTokens", @@ -2900,18 +2900,18 @@ DVM_PERMISSIONS_BY_PERMISSION = { "Landroid/os/INetworkManagementService$Stub$Proxy;": [ ("F", "attachPppd", "(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)" - ), + ), ("F", "detachPppd", "(Ljava/lang/String;)"), ("F", "disableNat", "(Ljava/lang/String; Ljava/lang/String;)"), ("F", "enableNat", "(Ljava/lang/String; Ljava/lang/String;)"), ("F", "setAccessPoint", "(Landroid/net/wifi/WifiConfiguration; Ljava/lang/String; Ljava/lang/String;)" - ), + ), ("F", "setInterfaceThrottle", "(Ljava/lang/String; I I)"), ("F", "setIpForwardingEnabled", "(B)"), ("F", "startAccessPoint", "(Landroid/net/wifi/WifiConfiguration; Ljava/lang/String; Ljava/lang/String;)" - ), + ), ("F", "startUsbRNDIS", "()"), ("F", "stopAccessPoint", "()"), ("F", "stopTethering", "()"), @@ -2926,10 +2926,10 @@ DVM_PERMISSIONS_BY_PERMISSION = { "Landroid/app/ContextImpl$ApplicationContentResolver;": [ ("F", "addPeriodicSync", "(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle; J)" - ), + ), ("F", "removePeriodicSync", "(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ("F", "setIsSyncable", "(Landroid/accounts/Account; Ljava/lang/String; I)"), ("F", "setMasterSyncAutomatically", "(B)"), @@ -2939,10 +2939,10 @@ DVM_PERMISSIONS_BY_PERMISSION = { "Landroid/content/ContentService;": [ ("F", "addPeriodicSync", "(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle; J)" - ), + ), ("F", "removePeriodicSync", "(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ("F", "setIsSyncable", "(Landroid/accounts/Account; Ljava/lang/String; I)"), ("F", "setMasterSyncAutomatically", "(B)"), @@ -2952,10 +2952,10 @@ DVM_PERMISSIONS_BY_PERMISSION = { "Landroid/content/ContentResolver;": [ ("F", "addPeriodicSync", "(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle; J)" - ), + ), ("F", "removePeriodicSync", "(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ("F", "setIsSyncable", "(Landroid/accounts/Account; Ljava/lang/String; I)"), ("F", "setMasterSyncAutomatically", "(B)"), @@ -2965,10 +2965,10 @@ DVM_PERMISSIONS_BY_PERMISSION = { "Landroid/content/IContentService$Stub$Proxy;": [ ("F", "addPeriodicSync", "(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle; J)" - ), + ), ("F", "removePeriodicSync", "(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ("F", "setIsSyncable", "(Landroid/accounts/Account; Ljava/lang/String; I)"), ("F", "setMasterSyncAutomatically", "(B)"), @@ -2984,80 +2984,80 @@ DVM_PERMISSIONS_BY_PERMISSION = { ("F", "checkBinderPermission", "()"), ("F", "confirmCredentials", "(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Landroid/os/Bundle;)" - ), + ), ("F", "editProperties", "(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String;)" - ), + ), ("F", "getAccountRemovalAllowed", "(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account;)" - ), + ), ("F", "getAuthToken", "(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ("F", "getAuthTokenLabel", "(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String;)" - ), + ), ("F", "hasFeatures", "(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; [L[Ljava/lang/Strin;)" - ), + ), ("F", "updateCredentials", "(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ("F", "addAccount", "(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String; Ljava/lang/String; [L[Ljava/lang/Strin; Landroid/os/Bundle;)" - ), + ), ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;": [ ("F", "addAccount", "(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String; Ljava/lang/String; [L[Ljava/lang/Strin; Landroid/os/Bundle;)" - ), + ), ("F", "confirmCredentials", "(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Landroid/os/Bundle;)" - ), + ), ("F", "editProperties", "(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String;)" - ), + ), ("F", "getAccountRemovalAllowed", "(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account;)" - ), + ), ("F", "getAuthToken", "(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ("F", "getAuthTokenLabel", "(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String;)" - ), + ), ("F", "hasFeatures", "(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; [L[Ljava/lang/Strin;)" - ), + ), ("F", "updateCredentials", "(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ], "Landroid/accounts/IAccountAuthenticator$Stub$Proxy;": [ ("F", "addAccount", "(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String; Ljava/lang/String; [L[Ljava/lang/Strin; Landroid/os/Bundle;)" - ), + ), ("F", "confirmCredentials", "(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Landroid/os/Bundle;)" - ), + ), ("F", "editProperties", "(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String;)" - ), + ), ("F", "getAccountRemovalAllowed", "(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account;)" - ), + ), ("F", "getAuthToken", "(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ("F", "getAuthTokenLabel", "(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String;)" - ), + ), ("F", "hasFeatures", "(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; [L[Ljava/lang/Strin;)" - ), + ), ("F", "updateCredentials", "(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)" - ), + ), ], }, "SET_ANIMATION_SCALE": { @@ -3072,24 +3072,24 @@ DVM_PERMISSIONS_BY_PERMISSION = { ("F", "getAccountsByType", "(Ljava/lang/String;)"), ("F", "getAccountsByTypeAndFeatures", "(Ljava/lang/String; [Ljava/lang/String; [Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)" - ), + ), ("F", "addOnAccountsUpdatedListener", "(Landroid/accounts/OnAccountsUpdateListener; Landroid/os/Handler; B)" - ), + ), ("F", "getAccounts", "()"), ("F", "getAccountsByType", "(Ljava/lang/String;)"), ("F", "getAccountsByTypeAndFeatures", "(Ljava/lang/String; [L[Ljava/lang/Strin; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)" - ), + ), ("F", "getAuthTokenByFeatures", "(Ljava/lang/String; Ljava/lang/String; [L[Ljava/lang/Strin; Landroid/app/Activity; Landroid/os/Bundle; Landroid/os/Bundle; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)" - ), + ), ("F", "hasFeatures", "(Landroid/accounts/Account; [L[Ljava/lang/Strin; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)" - ), + ), ], "Landroid/content/ContentService;": [ ("F", "", "(Landroid/content/Context; B)"), @@ -3107,20 +3107,20 @@ DVM_PERMISSIONS_BY_PERMISSION = { ("F", "getAccounts", "(Ljava/lang/String;)"), ("F", "getAccountsByFeatures", "(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; [L[Ljava/lang/Strin;)" - ), + ), ("F", "hasFeatures", "(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; [L[Ljava/lang/Strin;)" - ), + ), ], "Landroid/accounts/AccountManagerService;": [ ("F", "checkReadAccountsPermission", "()"), ("F", "getAccounts", "(Ljava/lang/String;)"), ("F", "getAccountsByFeatures", "(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; [L[Ljava/lang/Strin;)" - ), + ), ("F", "hasFeatures", "(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; [L[Ljava/lang/Strin;)" - ), + ), ], }, "RECEIVE_SMS": { @@ -3175,12 +3175,12 @@ DVM_PERMISSIONS_BY_PERMISSION = { "REBOOT": { "Landroid/os/RecoverySystem;": [ ("F", "installPackage", "(Landroid/content/Context; Ljava/io/File;)" - ), + ), ("F", "rebootWipeUserData", "(Landroid/content/Context;)"), ("F", "bootCommand", "(Landroid/content/Context; Ljava/lang/String;)"), ("F", "installPackage", "(Landroid/content/Context; Ljava/io/File;)" - ), + ), ("F", "rebootWipeUserData", "(Landroid/content/Context;)"), ], "Landroid/content/Intent;": [ @@ -3200,20 +3200,20 @@ DVM_PERMISSIONS_BY_PERMISSION = { "Landroid/app/ContextImpl$ApplicationPackageManager;": [ ("F", "installPackage", "(Landroid/net/Uri; LIPackageInstallObserver; I Ljava/lang/String;)" - ), + ), ("F", "installPackage", "(Landroid/net/Uri; LIPackageInstallObserver; I Ljava/lang/String;)" - ), + ), ], "Landroid/content/pm/PackageManager;": [ ("F", "installPackage", "(Landroid/net/Uri; LIPackageInstallObserver; I Ljava/lang/String;)" - ), + ), ], "Landroid/content/pm/IPackageManager$Stub$Proxy;": [ ("F", "installPackage", "(Landroid/net/Uri; Landroid/content/pm/IPackageInstallObserver; I Ljava/lang/String;)" - ), + ), ], }, "SET_DEBUG_APP": { @@ -3237,17 +3237,17 @@ DVM_PERMISSIONS_BY_PERMISSION = { "READ_CONTACTS": { "Landroid/app/ContextImpl$ApplicationContentResolver;": [ ("F", "openFileDescriptor", "(Landroid/net/Uri; Ljava/lang/String;)" - ), + ), ("F", "openInputStream", "(Landroid/net/Uri;)"), ("F", "openOutputStream", "(Landroid/net/Uri;)"), ("F", "query", "(Landroid/net/Uri; [L[Ljava/lang/Strin; Ljava/lang/String; [L[Ljava/lang/Strin; Ljava/lang/String;)" - ), + ), ], "Lcom/android/internal/telephony/IccPhoneBookInterfaceManager$Stub$Proxy;": - [ - ("F", "getAdnRecordsInEf", "(I)"), - ], + [ + ("F", "getAdnRecordsInEf", "(I)"), + ], "Landroid/provider/Contacts$People;": [ ("F", "addToGroup", "(Landroid/content/ContentResolver; J Ljava/lang/String;)"), @@ -3255,10 +3255,10 @@ DVM_PERMISSIONS_BY_PERMISSION = { "(Landroid/content/ContentResolver; J)"), ("F", "createPersonInMyContactsGroup", "(Landroid/content/ContentResolver; Landroid/content/ContentValues;)" - ), + ), ("F", "loadContactPhoto", "(Landroid/content/Context; Landroid/net/Uri; I Landroid/graphics/BitmapFactory$Options;)" - ), + ), ("F", "markAsContacted", "(Landroid/content/ContentResolver; J)"), ("F", "openContactPhotoInputStream", "(Landroid/content/ContentResolver; Landroid/net/Uri;)"), @@ -3300,7 +3300,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { "Landroid/provider/Contacts$Settings;": [ ("F", "getSetting", "(Landroid/content/ContentResolver; Ljava/lang/String; Ljava/lang/String;)" - ), + ), ], "Landroid/provider/ContactsContract$RawContacts;": [ ("F", "getContactLookupUri", @@ -3309,7 +3309,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { "Landroid/provider/CallLog$Calls;": [ ("F", "addCall", "(Lcom/android/internal/telephony/CallerInfo; Landroid/content/Context; Ljava/lang/String; I I J I)" - ), + ), ("F", "getLastOutgoingCall", "(Landroid/content/Context;)"), ], "Lcom/android/internal/telephony/IIccPhoneBook$Stub$Proxy;": [ @@ -3328,12 +3328,12 @@ DVM_PERMISSIONS_BY_PERMISSION = { ], "Landroid/content/ContentResolver;": [ ("F", "openFileDescriptor", "(Landroid/net/Uri; Ljava/lang/String;)" - ), + ), ("F", "openInputStream", "(Landroid/net/Uri;)"), ("F", "openOutputStream", "(Landroid/net/Uri;)"), ("F", "query", "(Landroid/net/Uri; [L[Ljava/lang/Strin; Ljava/lang/String; [L[Ljava/lang/Strin; Ljava/lang/String;)" - ), + ), ], }, "BACKUP": { @@ -3351,7 +3351,7 @@ DVM_PERMISSIONS_BY_PERMISSION = { ], "Landroid/app/IActivityManager$Stub$Proxy;": [ ("F", "bindBackupAgent", "(Landroid/content/pm/ApplicationInfo; I)" - ), + ), ], "Landroid/app/backup/BackupManager;": [ ("F", "beginRestoreSession", "()"), @@ -3363,323 +3363,323 @@ DVM_PERMISSIONS_BY_PERMISSION = { DVM_PERMISSIONS_BY_ELEMENT = { "Landroid/app/admin/DeviceAdminReceiver;-ACTION_DEVICE_ADMIN_ENABLED-Ljava/lang/String;": - "BIND_DEVICE_ADMIN", + "BIND_DEVICE_ADMIN", "Landroid/app/admin/DevicePolicyManager;-getRemoveWarning-(Landroid/content/ComponentName; Landroid/os/RemoteCallback;)": - "BIND_DEVICE_ADMIN", + "BIND_DEVICE_ADMIN", "Landroid/app/admin/DevicePolicyManager;-reportFailedPasswordAttempt-()": - "BIND_DEVICE_ADMIN", + "BIND_DEVICE_ADMIN", "Landroid/app/admin/DevicePolicyManager;-reportSuccessfulPasswordAttempt-()": - "BIND_DEVICE_ADMIN", + "BIND_DEVICE_ADMIN", "Landroid/app/admin/DevicePolicyManager;-setActiveAdmin-(Landroid/content/ComponentName;)": - "BIND_DEVICE_ADMIN", + "BIND_DEVICE_ADMIN", "Landroid/app/admin/DevicePolicyManager;-setActivePasswordState-(I I)": - "BIND_DEVICE_ADMIN", + "BIND_DEVICE_ADMIN", "Landroid/app/admin/IDevicePolicyManager$Stub$Proxy;-getRemoveWarning-(Landroid/content/ComponentName; Landroid/os/RemoteCallback;)": - "BIND_DEVICE_ADMIN", + "BIND_DEVICE_ADMIN", "Landroid/app/admin/IDevicePolicyManager$Stub$Proxy;-reportFailedPasswordAttempt-()": - "BIND_DEVICE_ADMIN", + "BIND_DEVICE_ADMIN", "Landroid/app/admin/IDevicePolicyManager$Stub$Proxy;-reportSuccessfulPasswordAttempt-()": - "BIND_DEVICE_ADMIN", + "BIND_DEVICE_ADMIN", "Landroid/app/admin/IDevicePolicyManager$Stub$Proxy;-setActiveAdmin-(Landroid/content/ComponentName;)": - "BIND_DEVICE_ADMIN", + "BIND_DEVICE_ADMIN", "Landroid/app/admin/IDevicePolicyManager$Stub$Proxy;-setActivePasswordState-(I I)": - "BIND_DEVICE_ADMIN", + "BIND_DEVICE_ADMIN", "Landroid/app/ContextImpl$ApplicationContentResolver;-getIsSyncable-(Landroid/accounts/Account; Ljava/lang/String;)": - "READ_SYNC_SETTINGS", + "READ_SYNC_SETTINGS", "Landroid/app/ContextImpl$ApplicationContentResolver;-getMasterSyncAutomatically-()": - "READ_SYNC_SETTINGS", + "READ_SYNC_SETTINGS", "Landroid/app/ContextImpl$ApplicationContentResolver;-getPeriodicSyncs-(Landroid/accounts/Account; Ljava/lang/String;)": - "READ_SYNC_SETTINGS", + "READ_SYNC_SETTINGS", "Landroid/app/ContextImpl$ApplicationContentResolver;-getSyncAutomatically-(Landroid/accounts/Account; Ljava/lang/String;)": - "READ_SYNC_SETTINGS", + "READ_SYNC_SETTINGS", "Landroid/content/ContentService;-getIsSyncable-(Landroid/accounts/Account; Ljava/lang/String;)": - "READ_SYNC_SETTINGS", + "READ_SYNC_SETTINGS", "Landroid/content/ContentService;-getMasterSyncAutomatically-()": - "READ_SYNC_SETTINGS", + "READ_SYNC_SETTINGS", "Landroid/content/ContentService;-getPeriodicSyncs-(Landroid/accounts/Account; Ljava/lang/String;)": - "READ_SYNC_SETTINGS", + "READ_SYNC_SETTINGS", "Landroid/content/ContentService;-getSyncAutomatically-(Landroid/accounts/Account; Ljava/lang/String;)": - "READ_SYNC_SETTINGS", + "READ_SYNC_SETTINGS", "Landroid/content/ContentResolver;-getIsSyncable-(Landroid/accounts/Account; Ljava/lang/String;)": - "READ_SYNC_SETTINGS", + "READ_SYNC_SETTINGS", "Landroid/content/ContentResolver;-getMasterSyncAutomatically-()": - "READ_SYNC_SETTINGS", + "READ_SYNC_SETTINGS", "Landroid/content/ContentResolver;-getPeriodicSyncs-(Landroid/accounts/Account; Ljava/lang/String;)": - "READ_SYNC_SETTINGS", + "READ_SYNC_SETTINGS", "Landroid/content/ContentResolver;-getSyncAutomatically-(Landroid/accounts/Account; Ljava/lang/String;)": - "READ_SYNC_SETTINGS", + "READ_SYNC_SETTINGS", "Landroid/content/IContentService$Stub$Proxy;-getIsSyncable-(Landroid/accounts/Account; Ljava/lang/String;)": - "READ_SYNC_SETTINGS", + "READ_SYNC_SETTINGS", "Landroid/content/IContentService$Stub$Proxy;-getMasterSyncAutomatically-()": - "READ_SYNC_SETTINGS", + "READ_SYNC_SETTINGS", "Landroid/content/IContentService$Stub$Proxy;-getPeriodicSyncs-(Landroid/accounts/Account; Ljava/lang/String;)": - "READ_SYNC_SETTINGS", + "READ_SYNC_SETTINGS", "Landroid/content/IContentService$Stub$Proxy;-getSyncAutomatically-(Landroid/accounts/Account; Ljava/lang/String;)": - "READ_SYNC_SETTINGS", + "READ_SYNC_SETTINGS", "Landroid/content/pm/ApplicationInfo;-FLAG_FACTORY_TEST-I": "FACTORY_TEST", "Landroid/content/pm/ApplicationInfo;-flags-I": "FACTORY_TEST", "Landroid/content/Intent;-IntentResolution-Ljava/lang/String;": - "FACTORY_TEST", + "FACTORY_TEST", "Landroid/content/Intent;-ACTION_FACTORY_TEST-Ljava/lang/String;": - "FACTORY_TEST", + "FACTORY_TEST", "Landroid/app/IActivityManager$Stub$Proxy;-setAlwaysFinish-(B)": - "SET_ALWAYS_FINISH", + "SET_ALWAYS_FINISH", "Landroid/provider/Calendar$CalendarAlerts;-alarmExists-(Landroid/content/ContentResolver; J J J)": - "READ_CALENDAR", + "READ_CALENDAR", "Landroid/provider/Calendar$CalendarAlerts;-findNextAlarmTime-(Landroid/content/ContentResolver; J)": - "READ_CALENDAR", + "READ_CALENDAR", "Landroid/provider/Calendar$CalendarAlerts;-query-(Landroid/content/ContentResolver; [L[Ljava/lang/Strin; Ljava/lang/String; [L[Ljava/lang/Strin; Ljava/lang/String;)": - "READ_CALENDAR", + "READ_CALENDAR", "Landroid/provider/Calendar$Calendars;-query-(Landroid/content/ContentResolver; [L[Ljava/lang/Strin; Ljava/lang/String; Ljava/lang/String;)": - "READ_CALENDAR", + "READ_CALENDAR", "Landroid/provider/Calendar$Events;-query-(Landroid/content/ContentResolver; [L[Ljava/lang/Strin; Ljava/lang/String; Ljava/lang/String;)": - "READ_CALENDAR", + "READ_CALENDAR", "Landroid/provider/Calendar$Events;-query-(Landroid/content/ContentResolver; [L[Ljava/lang/Strin;)": - "READ_CALENDAR", + "READ_CALENDAR", "Landroid/provider/Calendar$Instances;-query-(Landroid/content/ContentResolver; [L[Ljava/lang/Strin; J J Ljava/lang/String; Ljava/lang/String;)": - "READ_CALENDAR", + "READ_CALENDAR", "Landroid/provider/Calendar$Instances;-query-(Landroid/content/ContentResolver; [L[Ljava/lang/Strin; J J)": - "READ_CALENDAR", + "READ_CALENDAR", "Landroid/provider/Calendar$EventDays;-query-(Landroid/content/ContentResolver; I I)": - "READ_CALENDAR", + "READ_CALENDAR", "Landroid/provider/DrmStore;-enforceAccessDrmPermission-(Landroid/content/Context;)": - "ACCESS_DRM", + "ACCESS_DRM", "Landroid/app/IActivityManager$Stub$Proxy;-updateConfiguration-(Landroid/content/res/Configuration;)": - "CHANGE_CONFIGURATION", + "CHANGE_CONFIGURATION", "Landroid/app/IActivityManager$Stub$Proxy;-profileControl-(Ljava/lang/String; B Ljava/lang/String; Landroid/os/ParcelFileDescriptor;)": - "SET_ACTIVITY_WATCHER", + "SET_ACTIVITY_WATCHER", "Landroid/app/IActivityManager$Stub$Proxy;-setActivityController-(Landroid/app/IActivityController;)": - "SET_ACTIVITY_WATCHER", + "SET_ACTIVITY_WATCHER", "Landroid/app/ContextImpl$ApplicationPackageManager;-getPackageSizeInfo-(Ljava/lang/String; LIPackageStatsObserver;)": - "GET_PACKAGE_SIZE", + "GET_PACKAGE_SIZE", "Landroid/app/ContextImpl$ApplicationPackageManager;-getPackageSizeInfo-(Ljava/lang/String; Landroid/content/pm/IPackageStatsObserver;)": - "GET_PACKAGE_SIZE", + "GET_PACKAGE_SIZE", "Landroid/content/pm/PackageManager;-getPackageSizeInfo-(Ljava/lang/String; Landroid/content/pm/IPackageStatsObserver;)": - "GET_PACKAGE_SIZE", + "GET_PACKAGE_SIZE", "Landroid/telephony/TelephonyManager;-disableLocationUpdates-()": - "CONTROL_LOCATION_UPDATES", + "CONTROL_LOCATION_UPDATES", "Landroid/telephony/TelephonyManager;-enableLocationUpdates-()": - "CONTROL_LOCATION_UPDATES", + "CONTROL_LOCATION_UPDATES", "Lcom/android/internal/telephony/ITelephony$Stub$Proxy;-disableLocationUpdates-()": - "CONTROL_LOCATION_UPDATES", + "CONTROL_LOCATION_UPDATES", "Lcom/android/internal/telephony/ITelephony$Stub$Proxy;-enableLocationUpdates-()": - "CONTROL_LOCATION_UPDATES", + "CONTROL_LOCATION_UPDATES", "Landroid/app/ContextImpl$ApplicationPackageManager;-freeStorage-(J LIntentSender;)": - "CLEAR_APP_CACHE", + "CLEAR_APP_CACHE", "Landroid/app/ContextImpl$ApplicationPackageManager;-freeStorageAndNotify-(J LIPackageDataObserver;)": - "CLEAR_APP_CACHE", + "CLEAR_APP_CACHE", "Landroid/app/ContextImpl$ApplicationPackageManager;-freeStorage-(J Landroid/content/IntentSender;)": - "CLEAR_APP_CACHE", + "CLEAR_APP_CACHE", "Landroid/app/ContextImpl$ApplicationPackageManager;-freeStorageAndNotify-(J Landroid/content/pm/IPackageDataObserver;)": - "CLEAR_APP_CACHE", + "CLEAR_APP_CACHE", "Landroid/content/pm/PackageManager;-freeStorage-(J Landroid/content/IntentSender;)": - "CLEAR_APP_CACHE", + "CLEAR_APP_CACHE", "Landroid/content/pm/PackageManager;-freeStorageAndNotify-(J Landroid/content/pm/IPackageDataObserver;)": - "CLEAR_APP_CACHE", + "CLEAR_APP_CACHE", "Landroid/content/pm/IPackageManager$Stub$Proxy;-freeStorage-(J Landroid/content/IntentSender;)": - "CLEAR_APP_CACHE", + "CLEAR_APP_CACHE", "Landroid/content/pm/IPackageManager$Stub$Proxy;-freeStorageAndNotify-(J Landroid/content/pm/IPackageDataObserver;)": - "CLEAR_APP_CACHE", + "CLEAR_APP_CACHE", "Landroid/view/inputmethod/InputMethod;-SERVICE_INTERFACE-Ljava/lang/String;": - "BIND_INPUT_METHOD", + "BIND_INPUT_METHOD", "Landroid/app/IActivityManager$Stub$Proxy;-signalPersistentProcesses-(I)": - "SIGNAL_PERSISTENT_PROCESSES", + "SIGNAL_PERSISTENT_PROCESSES", "Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-getAwakeTimeBattery-()": - "BATTERY_STATS", + "BATTERY_STATS", "Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-getAwakeTimePlugged-()": - "BATTERY_STATS", + "BATTERY_STATS", "Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-getStatistics-()": - "BATTERY_STATS", + "BATTERY_STATS", "Landroid/accounts/AccountManager;-addAccountExplicitly-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)": - "AUTHENTICATE_ACCOUNTS", + "AUTHENTICATE_ACCOUNTS", "Landroid/accounts/AccountManager;-getPassword-(Landroid/accounts/Account;)": - "AUTHENTICATE_ACCOUNTS", + "AUTHENTICATE_ACCOUNTS", "Landroid/accounts/AccountManager;-getUserData-(Landroid/accounts/Account; Ljava/lang/String;)": - "AUTHENTICATE_ACCOUNTS", + "AUTHENTICATE_ACCOUNTS", "Landroid/accounts/AccountManager;-peekAuthToken-(Landroid/accounts/Account; Ljava/lang/String;)": - "AUTHENTICATE_ACCOUNTS", + "AUTHENTICATE_ACCOUNTS", "Landroid/accounts/AccountManager;-setAuthToken-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)": - "AUTHENTICATE_ACCOUNTS", + "AUTHENTICATE_ACCOUNTS", "Landroid/accounts/AccountManager;-setPassword-(Landroid/accounts/Account; Ljava/lang/String;)": - "AUTHENTICATE_ACCOUNTS", + "AUTHENTICATE_ACCOUNTS", "Landroid/accounts/AccountManager;-setUserData-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)": - "AUTHENTICATE_ACCOUNTS", + "AUTHENTICATE_ACCOUNTS", "Landroid/accounts/AccountManager;-addAccountExplicitly-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)": - "AUTHENTICATE_ACCOUNTS", + "AUTHENTICATE_ACCOUNTS", "Landroid/accounts/AccountManager;-getPassword-(Landroid/accounts/Account;)": - "AUTHENTICATE_ACCOUNTS", + "AUTHENTICATE_ACCOUNTS", "Landroid/accounts/AccountManager;-getUserData-(Landroid/accounts/Account; Ljava/lang/String;)": - "AUTHENTICATE_ACCOUNTS", + "AUTHENTICATE_ACCOUNTS", "Landroid/accounts/AccountManager;-peekAuthToken-(Landroid/accounts/Account; Ljava/lang/String;)": - "AUTHENTICATE_ACCOUNTS", + "AUTHENTICATE_ACCOUNTS", "Landroid/accounts/AccountManager;-setAuthToken-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)": - "AUTHENTICATE_ACCOUNTS", + "AUTHENTICATE_ACCOUNTS", "Landroid/accounts/AccountManager;-setPassword-(Landroid/accounts/Account; Ljava/lang/String;)": - "AUTHENTICATE_ACCOUNTS", + "AUTHENTICATE_ACCOUNTS", "Landroid/accounts/AccountManager;-setUserData-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)": - "AUTHENTICATE_ACCOUNTS", + "AUTHENTICATE_ACCOUNTS", "Landroid/accounts/AccountManagerService;-addAccount-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)": - "AUTHENTICATE_ACCOUNTS", + "AUTHENTICATE_ACCOUNTS", "Landroid/accounts/AccountManagerService;-checkAuthenticateAccountsPermission-(Landroid/accounts/Account;)": - "AUTHENTICATE_ACCOUNTS", + "AUTHENTICATE_ACCOUNTS", "Landroid/accounts/AccountManagerService;-getPassword-(Landroid/accounts/Account;)": - "AUTHENTICATE_ACCOUNTS", + "AUTHENTICATE_ACCOUNTS", "Landroid/accounts/AccountManagerService;-getUserData-(Landroid/accounts/Account; Ljava/lang/String;)": - "AUTHENTICATE_ACCOUNTS", + "AUTHENTICATE_ACCOUNTS", "Landroid/accounts/AccountManagerService;-peekAuthToken-(Landroid/accounts/Account; Ljava/lang/String;)": - "AUTHENTICATE_ACCOUNTS", + "AUTHENTICATE_ACCOUNTS", "Landroid/accounts/AccountManagerService;-setAuthToken-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)": - "AUTHENTICATE_ACCOUNTS", + "AUTHENTICATE_ACCOUNTS", "Landroid/accounts/AccountManagerService;-setPassword-(Landroid/accounts/Account; Ljava/lang/String;)": - "AUTHENTICATE_ACCOUNTS", + "AUTHENTICATE_ACCOUNTS", "Landroid/accounts/AccountManagerService;-setUserData-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)": - "AUTHENTICATE_ACCOUNTS", + "AUTHENTICATE_ACCOUNTS", "Landroid/accounts/IAccountManager$Stub$Proxy;-addAccount-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)": - "AUTHENTICATE_ACCOUNTS", + "AUTHENTICATE_ACCOUNTS", "Landroid/accounts/IAccountManager$Stub$Proxy;-getPassword-(Landroid/accounts/Account;)": - "AUTHENTICATE_ACCOUNTS", + "AUTHENTICATE_ACCOUNTS", "Landroid/accounts/IAccountManager$Stub$Proxy;-getUserData-(Landroid/accounts/Account; Ljava/lang/String;)": - "AUTHENTICATE_ACCOUNTS", + "AUTHENTICATE_ACCOUNTS", "Landroid/accounts/IAccountManager$Stub$Proxy;-peekAuthToken-(Landroid/accounts/Account; Ljava/lang/String;)": - "AUTHENTICATE_ACCOUNTS", + "AUTHENTICATE_ACCOUNTS", "Landroid/accounts/IAccountManager$Stub$Proxy;-setAuthToken-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)": - "AUTHENTICATE_ACCOUNTS", + "AUTHENTICATE_ACCOUNTS", "Landroid/accounts/IAccountManager$Stub$Proxy;-setPassword-(Landroid/accounts/Account; Ljava/lang/String;)": - "AUTHENTICATE_ACCOUNTS", + "AUTHENTICATE_ACCOUNTS", "Landroid/accounts/IAccountManager$Stub$Proxy;-setUserData-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)": - "AUTHENTICATE_ACCOUNTS", + "AUTHENTICATE_ACCOUNTS", "Landroid/net/IConnectivityManager$Stub$Proxy;-setBackgroundDataSetting-(B)": - "CHANGE_BACKGROUND_DATA_SETTING", + "CHANGE_BACKGROUND_DATA_SETTING", "Landroid/net/ConnectivityManager;-setBackgroundDataSetting-(B)": - "CHANGE_BACKGROUND_DATA_SETTING", + "CHANGE_BACKGROUND_DATA_SETTING", "Landroid/app/ActivityManagerNative;-killBackgroundProcesses-(Ljava/lang/String;)": - "RESTART_PACKAGES", + "RESTART_PACKAGES", "Landroid/app/ActivityManagerNative;-restartPackage-(Ljava/lang/String;)": - "RESTART_PACKAGES", + "RESTART_PACKAGES", "Landroid/app/ActivityManager;-killBackgroundProcesses-(Ljava/lang/String;)": - "RESTART_PACKAGES", + "RESTART_PACKAGES", "Landroid/app/ActivityManager;-restartPackage-(Ljava/lang/String;)": - "RESTART_PACKAGES", + "RESTART_PACKAGES", "Landroid/telephony/TelephonyManager;-getCompleteVoiceMailNumber-()": - "CALL_PRIVILEGED", + "CALL_PRIVILEGED", "Landroid/telephony/PhoneNumberUtils;-getNumberFromIntent-(Landroid/content/Intent; Landroid/content/Context;)": - "CALL_PRIVILEGED", + "CALL_PRIVILEGED", "Landroid/app/IWallpaperManager$Stub$Proxy;-setWallpaperComponent-(Landroid/content/ComponentName;)": - "SET_WALLPAPER_COMPONENT", + "SET_WALLPAPER_COMPONENT", "Landroid/view/IWindowManager$Stub$Proxy;-disableKeyguard-(Landroid/os/IBinder; Ljava/lang/String;)": - "DISABLE_KEYGUARD", + "DISABLE_KEYGUARD", "Landroid/view/IWindowManager$Stub$Proxy;-exitKeyguardSecurely-(Landroid/view/IOnKeyguardExitResult;)": - "DISABLE_KEYGUARD", + "DISABLE_KEYGUARD", "Landroid/view/IWindowManager$Stub$Proxy;-reenableKeyguard-(Landroid/os/IBinder;)": - "DISABLE_KEYGUARD", + "DISABLE_KEYGUARD", "Landroid/app/KeyguardManager;-exitKeyguardSecurely-(Landroid/app/KeyguardManager$OnKeyguardExitResult;)": - "DISABLE_KEYGUARD", + "DISABLE_KEYGUARD", "Landroid/app/KeyguardManager$KeyguardLock;-disableKeyguard-()": - "DISABLE_KEYGUARD", + "DISABLE_KEYGUARD", "Landroid/app/KeyguardManager$KeyguardLock;-reenableKeyguard-()": - "DISABLE_KEYGUARD", + "DISABLE_KEYGUARD", "Landroid/app/ContextImpl$ApplicationPackageManager;-deletePackage-(Ljava/lang/String; LIPackageDeleteObserver; I)": - "DELETE_PACKAGES", + "DELETE_PACKAGES", "Landroid/app/ContextImpl$ApplicationPackageManager;-deletePackage-(Ljava/lang/String; LIPackageDeleteObserver; I)": - "DELETE_PACKAGES", + "DELETE_PACKAGES", "Landroid/content/pm/PackageManager;-deletePackage-(Ljava/lang/String; LIPackageDeleteObserver; I)": - "DELETE_PACKAGES", + "DELETE_PACKAGES", "Landroid/content/pm/IPackageManager$Stub$Proxy;-deletePackage-(Ljava/lang/String; Landroid/content/pm/IPackageDeleteObserver; I)": - "DELETE_PACKAGES", + "DELETE_PACKAGES", "Landroid/app/ContextImpl$ApplicationPackageManager;-setApplicationEnabledSetting-(Ljava/lang/String; I I)": - "CHANGE_COMPONENT_ENABLED_STATE", + "CHANGE_COMPONENT_ENABLED_STATE", "Landroid/app/ContextImpl$ApplicationPackageManager;-setComponentEnabledSetting-(LComponentName; I I)": - "CHANGE_COMPONENT_ENABLED_STATE", + "CHANGE_COMPONENT_ENABLED_STATE", "Landroid/app/ContextImpl$ApplicationPackageManager;-setApplicationEnabledSetting-(Ljava/lang/String; I I)": - "CHANGE_COMPONENT_ENABLED_STATE", + "CHANGE_COMPONENT_ENABLED_STATE", "Landroid/app/ContextImpl$ApplicationPackageManager;-setComponentEnabledSetting-(Landroid/content/ComponentName; I I)": - "CHANGE_COMPONENT_ENABLED_STATE", + "CHANGE_COMPONENT_ENABLED_STATE", "Landroid/content/pm/PackageManager;-setApplicationEnabledSetting-(Ljava/lang/String; I I)": - "CHANGE_COMPONENT_ENABLED_STATE", + "CHANGE_COMPONENT_ENABLED_STATE", "Landroid/content/pm/PackageManager;-setComponentEnabledSetting-(Landroid/content/ComponentName; I I)": - "CHANGE_COMPONENT_ENABLED_STATE", + "CHANGE_COMPONENT_ENABLED_STATE", "Landroid/content/pm/IPackageManager$Stub$Proxy;-setApplicationEnabledSetting-(Ljava/lang/String; I I)": - "CHANGE_COMPONENT_ENABLED_STATE", + "CHANGE_COMPONENT_ENABLED_STATE", "Landroid/content/pm/IPackageManager$Stub$Proxy;-setComponentEnabledSetting-(Landroid/content/ComponentName; I I)": - "CHANGE_COMPONENT_ENABLED_STATE", + "CHANGE_COMPONENT_ENABLED_STATE", "Landroid/os/storage/IMountService$Stub$Proxy;-getSecureContainerList-()": - "ASEC_ACCESS", + "ASEC_ACCESS", "Landroid/os/storage/IMountService$Stub$Proxy;-getSecureContainerPath-(Ljava/lang/String;)": - "ASEC_ACCESS", + "ASEC_ACCESS", "Landroid/os/storage/IMountService$Stub$Proxy;-isSecureContainerMounted-(Ljava/lang/String;)": - "ASEC_ACCESS", + "ASEC_ACCESS", "Lcom/android/internal/app/IUsageStats$Stub$Proxy;-noteLaunchTime-(LComponentName;)": - "UPDATE_DEVICE_STATS", + "UPDATE_DEVICE_STATS", "Landroid/net/sip/SipAudioCall;-startAudio-()": "RECORD_AUDIO", "Landroid/media/MediaRecorder;-setAudioSource-(I)": "RECORD_AUDIO", "Landroid/speech/SpeechRecognizer;-cancel-()": "RECORD_AUDIO", "Landroid/speech/SpeechRecognizer;-handleCancelMessage-()": "RECORD_AUDIO", "Landroid/speech/SpeechRecognizer;-handleStartListening-(Landroid/content/Intent;)": - "RECORD_AUDIO", + "RECORD_AUDIO", "Landroid/speech/SpeechRecognizer;-handleStopMessage-()": "RECORD_AUDIO", "Landroid/speech/SpeechRecognizer;-startListening-(Landroid/content/Intent;)": - "RECORD_AUDIO", + "RECORD_AUDIO", "Landroid/speech/SpeechRecognizer;-stopListening-()": "RECORD_AUDIO", "Landroid/media/AudioRecord;--(I I I I I)": "RECORD_AUDIO", "Landroid/location/LocationManager;-addTestProvider-(Ljava/lang/String; B B B B B B B I I)": - "ACCESS_MOCK_LOCATION", + "ACCESS_MOCK_LOCATION", "Landroid/location/LocationManager;-clearTestProviderEnabled-(Ljava/lang/String;)": - "ACCESS_MOCK_LOCATION", + "ACCESS_MOCK_LOCATION", "Landroid/location/LocationManager;-clearTestProviderLocation-(Ljava/lang/String;)": - "ACCESS_MOCK_LOCATION", + "ACCESS_MOCK_LOCATION", "Landroid/location/LocationManager;-clearTestProviderStatus-(Ljava/lang/String;)": - "ACCESS_MOCK_LOCATION", + "ACCESS_MOCK_LOCATION", "Landroid/location/LocationManager;-removeTestProvider-(Ljava/lang/String;)": - "ACCESS_MOCK_LOCATION", + "ACCESS_MOCK_LOCATION", "Landroid/location/LocationManager;-setTestProviderEnabled-(Ljava/lang/String; B)": - "ACCESS_MOCK_LOCATION", + "ACCESS_MOCK_LOCATION", "Landroid/location/LocationManager;-setTestProviderLocation-(Ljava/lang/String; Landroid/location/Location;)": - "ACCESS_MOCK_LOCATION", + "ACCESS_MOCK_LOCATION", "Landroid/location/LocationManager;-setTestProviderStatus-(Ljava/lang/String; I Landroid/os/Bundle; J)": - "ACCESS_MOCK_LOCATION", + "ACCESS_MOCK_LOCATION", "Landroid/location/LocationManager;-addTestProvider-(Ljava/lang/String; B B B B B B B I I)": - "ACCESS_MOCK_LOCATION", + "ACCESS_MOCK_LOCATION", "Landroid/location/LocationManager;-clearTestProviderEnabled-(Ljava/lang/String;)": - "ACCESS_MOCK_LOCATION", + "ACCESS_MOCK_LOCATION", "Landroid/location/LocationManager;-clearTestProviderLocation-(Ljava/lang/String;)": - "ACCESS_MOCK_LOCATION", + "ACCESS_MOCK_LOCATION", "Landroid/location/LocationManager;-clearTestProviderStatus-(Ljava/lang/String;)": - "ACCESS_MOCK_LOCATION", + "ACCESS_MOCK_LOCATION", "Landroid/location/LocationManager;-removeTestProvider-(Ljava/lang/String;)": - "ACCESS_MOCK_LOCATION", + "ACCESS_MOCK_LOCATION", "Landroid/location/LocationManager;-setTestProviderEnabled-(Ljava/lang/String; B)": - "ACCESS_MOCK_LOCATION", + "ACCESS_MOCK_LOCATION", "Landroid/location/LocationManager;-setTestProviderLocation-(Ljava/lang/String; Landroid/location/Location;)": - "ACCESS_MOCK_LOCATION", + "ACCESS_MOCK_LOCATION", "Landroid/location/LocationManager;-setTestProviderStatus-(Ljava/lang/String; I Landroid/os/Bundle; J)": - "ACCESS_MOCK_LOCATION", + "ACCESS_MOCK_LOCATION", "Landroid/location/ILocationManager$Stub$Proxy;-addTestProvider-(Ljava/lang/String; B B B B B B B I I)": - "ACCESS_MOCK_LOCATION", + "ACCESS_MOCK_LOCATION", "Landroid/location/ILocationManager$Stub$Proxy;-clearTestProviderEnabled-(Ljava/lang/String;)": - "ACCESS_MOCK_LOCATION", + "ACCESS_MOCK_LOCATION", "Landroid/location/ILocationManager$Stub$Proxy;-clearTestProviderLocation-(Ljava/lang/String;)": - "ACCESS_MOCK_LOCATION", + "ACCESS_MOCK_LOCATION", "Landroid/location/ILocationManager$Stub$Proxy;-clearTestProviderStatus-(Ljava/lang/String;)": - "ACCESS_MOCK_LOCATION", + "ACCESS_MOCK_LOCATION", "Landroid/location/ILocationManager$Stub$Proxy;-removeTestProvider-(Ljava/lang/String;)": - "ACCESS_MOCK_LOCATION", + "ACCESS_MOCK_LOCATION", "Landroid/location/ILocationManager$Stub$Proxy;-setTestProviderEnabled-(Ljava/lang/String; B)": - "ACCESS_MOCK_LOCATION", + "ACCESS_MOCK_LOCATION", "Landroid/location/ILocationManager$Stub$Proxy;-setTestProviderLocation-(Ljava/lang/String; Landroid/location/Location;)": - "ACCESS_MOCK_LOCATION", + "ACCESS_MOCK_LOCATION", "Landroid/location/ILocationManager$Stub$Proxy;-setTestProviderStatus-(Ljava/lang/String; I Landroid/os/Bundle; J)": - "ACCESS_MOCK_LOCATION", + "ACCESS_MOCK_LOCATION", "Landroid/media/AudioManager;-EXTRA_RINGER_MODE-Ljava/lang/String;": - "VIBRATE", + "VIBRATE", "Landroid/media/AudioManager;-EXTRA_VIBRATE_SETTING-Ljava/lang/String;": - "VIBRATE", + "VIBRATE", "Landroid/media/AudioManager;-EXTRA_VIBRATE_TYPE-Ljava/lang/String;": - "VIBRATE", + "VIBRATE", "Landroid/media/AudioManager;-FLAG_REMOVE_SOUND_AND_VIBRATE-I": "VIBRATE", "Landroid/media/AudioManager;-FLAG_VIBRATE-I": "VIBRATE", "Landroid/media/AudioManager;-RINGER_MODE_VIBRATE-I": "VIBRATE", "Landroid/media/AudioManager;-VIBRATE_SETTING_CHANGED_ACTION-Ljava/lang/String;": - "VIBRATE", + "VIBRATE", "Landroid/media/AudioManager;-VIBRATE_SETTING_OFF-I": "VIBRATE", "Landroid/media/AudioManager;-VIBRATE_SETTING_ON-I": "VIBRATE", "Landroid/media/AudioManager;-VIBRATE_SETTING_ONLY_SILENT-I": "VIBRATE", @@ -3695,79 +3695,79 @@ DVM_PERMISSIONS_BY_ELEMENT = { "Landroid/os/Vibrator;-vibrate-(J)": "VIBRATE", "Landroid/provider/Settings/System;-VIBRATE_ON-Ljava/lang/String;": "VIBRATE", "Landroid/app/NotificationManager;-notify-(I Landroid/app/Notification;)": - "VIBRATE", + "VIBRATE", "Landroid/app/NotificationManager;-notify-(Ljava/lang/String; I Landroid/app/Notification;)": - "VIBRATE", + "VIBRATE", "Landroid/app/Notification/Builder;-setDefaults-(I)": "VIBRATE", "Landroid/os/IVibratorService$Stub$Proxy;-cancelVibrate-(Landroid/os/IBinder;)": - "VIBRATE", + "VIBRATE", "Landroid/os/IVibratorService$Stub$Proxy;-vibrate-(J Landroid/os/IBinder;)": - "VIBRATE", + "VIBRATE", "Landroid/os/IVibratorService$Stub$Proxy;-vibratePattern-([L; I Landroid/os/IBinder;)": - "VIBRATE", + "VIBRATE", "Landroid/app/Notification;-DEFAULT_VIBRATE-I": "VIBRATE", "Landroid/app/Notification;-defaults-I": "VIBRATE", "Landroid/os/storage/IMountService$Stub$Proxy;-createSecureContainer-(Ljava/lang/String; I Ljava/lang/String; Ljava/lang/String; I)": - "ASEC_CREATE", + "ASEC_CREATE", "Landroid/os/storage/IMountService$Stub$Proxy;-finalizeSecureContainer-(Ljava/lang/String;)": - "ASEC_CREATE", + "ASEC_CREATE", "Landroid/bluetooth/BluetoothAdapter;-setScanMode-(I I)": - "WRITE_SECURE_SETTINGS", + "WRITE_SECURE_SETTINGS", "Landroid/bluetooth/BluetoothAdapter;-setScanMode-(I)": - "WRITE_SECURE_SETTINGS", + "WRITE_SECURE_SETTINGS", "Landroid/server/BluetoothService;-setScanMode-(I I)": - "WRITE_SECURE_SETTINGS", + "WRITE_SECURE_SETTINGS", "Landroid/os/IPowerManager$Stub$Proxy;-setMaximumScreenOffTimeount-(I)": - "WRITE_SECURE_SETTINGS", + "WRITE_SECURE_SETTINGS", "Landroid/content/pm/IPackageManager$Stub$Proxy;-setInstallLocation-(I)": - "WRITE_SECURE_SETTINGS", + "WRITE_SECURE_SETTINGS", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-setScanMode-(I I)": - "WRITE_SECURE_SETTINGS", + "WRITE_SECURE_SETTINGS", "Landroid/view/IWindowManager$Stub$Proxy;-setRotation-(I B I)": - "SET_ORIENTATION", + "SET_ORIENTATION", "Lcom/android/internal/app/IUsageStats$Stub$Proxy;-getAllPkgUsageStats-()": - "PACKAGE_USAGE_STATS", + "PACKAGE_USAGE_STATS", "Lcom/android/internal/app/IUsageStats$Stub$Proxy;-getPkgUsageStats-(LComponentName;)": - "PACKAGE_USAGE_STATS", + "PACKAGE_USAGE_STATS", "Landroid/os/IHardwareService$Stub$Proxy;-setFlashlightEnabled-(B)": - "FLASHLIGHT", + "FLASHLIGHT", "Landroid/app/SearchManager;-EXTRA_SELECT_QUERY-Ljava/lang/String;": - "GLOBAL_SEARCH", + "GLOBAL_SEARCH", "Landroid/app/SearchManager;-INTENT_ACTION_GLOBAL_SEARCH-Ljava/lang/String;": - "GLOBAL_SEARCH", + "GLOBAL_SEARCH", "Landroid/server/search/Searchables;-buildSearchableList-()": "GLOBAL_SEARCH", "Landroid/server/search/Searchables;-findGlobalSearchActivity-()": - "GLOBAL_SEARCH", + "GLOBAL_SEARCH", "Landroid/net/wifi/IWifiManager$Stub$Proxy;-addOrUpdateNetwork-(Landroid/net/wifi/WifiConfiguration;)": - "CHANGE_WIFI_STATE", + "CHANGE_WIFI_STATE", "Landroid/net/wifi/IWifiManager$Stub$Proxy;-disableNetwork-(I)": - "CHANGE_WIFI_STATE", + "CHANGE_WIFI_STATE", "Landroid/net/wifi/IWifiManager$Stub$Proxy;-disconnect-()": - "CHANGE_WIFI_STATE", + "CHANGE_WIFI_STATE", "Landroid/net/wifi/IWifiManager$Stub$Proxy;-enableNetwork-(I B)": - "CHANGE_WIFI_STATE", + "CHANGE_WIFI_STATE", "Landroid/net/wifi/IWifiManager$Stub$Proxy;-pingSupplicant-()": - "CHANGE_WIFI_STATE", + "CHANGE_WIFI_STATE", "Landroid/net/wifi/IWifiManager$Stub$Proxy;-reassociate-()": - "CHANGE_WIFI_STATE", + "CHANGE_WIFI_STATE", "Landroid/net/wifi/IWifiManager$Stub$Proxy;-reconnect-()": - "CHANGE_WIFI_STATE", + "CHANGE_WIFI_STATE", "Landroid/net/wifi/IWifiManager$Stub$Proxy;-removeNetwork-(I)": - "CHANGE_WIFI_STATE", + "CHANGE_WIFI_STATE", "Landroid/net/wifi/IWifiManager$Stub$Proxy;-saveConfiguration-()": - "CHANGE_WIFI_STATE", + "CHANGE_WIFI_STATE", "Landroid/net/wifi/IWifiManager$Stub$Proxy;-setNumAllowedChannels-(I B)": - "CHANGE_WIFI_STATE", + "CHANGE_WIFI_STATE", "Landroid/net/wifi/IWifiManager$Stub$Proxy;-setWifiApEnabled-(Landroid/net/wifi/WifiConfiguration; B)": - "CHANGE_WIFI_STATE", + "CHANGE_WIFI_STATE", "Landroid/net/wifi/IWifiManager$Stub$Proxy;-setWifiEnabled-(B)": - "CHANGE_WIFI_STATE", + "CHANGE_WIFI_STATE", "Landroid/net/wifi/IWifiManager$Stub$Proxy;-startScan-(B)": - "CHANGE_WIFI_STATE", + "CHANGE_WIFI_STATE", "Landroid/net/wifi/WifiManager;-addNetwork-(Landroid/net/wifi/WifiConfiguration;)": - "CHANGE_WIFI_STATE", + "CHANGE_WIFI_STATE", "Landroid/net/wifi/WifiManager;-addOrUpdateNetwork-(Landroid/net/wifi/WifiConfiguration;)": - "CHANGE_WIFI_STATE", + "CHANGE_WIFI_STATE", "Landroid/net/wifi/WifiManager;-disableNetwork-(I)": "CHANGE_WIFI_STATE", "Landroid/net/wifi/WifiManager;-disconnect-()": "CHANGE_WIFI_STATE", "Landroid/net/wifi/WifiManager;-enableNetwork-(I B)": "CHANGE_WIFI_STATE", @@ -3777,350 +3777,350 @@ DVM_PERMISSIONS_BY_ELEMENT = { "Landroid/net/wifi/WifiManager;-removeNetwork-(I)": "CHANGE_WIFI_STATE", "Landroid/net/wifi/WifiManager;-saveConfiguration-()": "CHANGE_WIFI_STATE", "Landroid/net/wifi/WifiManager;-setNumAllowedChannels-(I B)": - "CHANGE_WIFI_STATE", + "CHANGE_WIFI_STATE", "Landroid/net/wifi/WifiManager;-setWifiApEnabled-(Landroid/net/wifi/WifiConfiguration; B)": - "CHANGE_WIFI_STATE", + "CHANGE_WIFI_STATE", "Landroid/net/wifi/WifiManager;-setWifiEnabled-(B)": "CHANGE_WIFI_STATE", "Landroid/net/wifi/WifiManager;-startScan-()": "CHANGE_WIFI_STATE", "Landroid/net/wifi/WifiManager;-startScanActive-()": "CHANGE_WIFI_STATE", "Landroid/app/ExpandableListActivity;-removeStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/ExpandableListActivity;-sendStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/ExpandableListActivity;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/accessibilityservice/AccessibilityService;-removeStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/accessibilityservice/AccessibilityService;-sendStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/accessibilityservice/AccessibilityService;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/accounts/GrantCredentialsPermissionActivity;-removeStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/accounts/GrantCredentialsPermissionActivity;-sendStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/accounts/GrantCredentialsPermissionActivity;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/backup/BackupAgent;-removeStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/backup/BackupAgent;-sendStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/backup/BackupAgent;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/service/wallpaper/WallpaperService;-removeStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/service/wallpaper/WallpaperService;-sendStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/service/wallpaper/WallpaperService;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/backup/BackupAgentHelper;-removeStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/backup/BackupAgentHelper;-sendStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/backup/BackupAgentHelper;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/accounts/AccountAuthenticatorActivity;-removeStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/accounts/AccountAuthenticatorActivity;-sendStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/accounts/AccountAuthenticatorActivity;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/IActivityManager$Stub$Proxy;-unbroadcastIntent-(Landroid/app/IApplicationThread; Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/ActivityGroup;-removeStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/ActivityGroup;-sendStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/ActivityGroup;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/content/ContextWrapper;-removeStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/content/ContextWrapper;-sendStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/content/ContextWrapper;-removeStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/content/ContextWrapper;-sendStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/content/ContextWrapper;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/Activity;-removeStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/Activity;-sendStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/Activity;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/ContextImpl;-removeStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/ContextImpl;-sendStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/ContextImpl;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/AliasActivity;-removeStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/AliasActivity;-sendStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/AliasActivity;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/content/Context;-removeStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/content/Context;-sendStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/content/Context;-removeStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/content/Context;-sendStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/content/Context;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/service/urlrenderer/UrlRendererService;-removeStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/service/urlrenderer/UrlRendererService;-sendStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/service/urlrenderer/UrlRendererService;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/FullBackupAgent;-removeStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/FullBackupAgent;-sendStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/FullBackupAgent;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/TabActivity;-removeStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/TabActivity;-sendStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/TabActivity;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/view/ContextThemeWrapper;-removeStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/view/ContextThemeWrapper;-sendStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/view/ContextThemeWrapper;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/speech/RecognitionService;-removeStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/speech/RecognitionService;-sendStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/speech/RecognitionService;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/IntentService;-removeStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/IntentService;-sendStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/IntentService;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/inputmethodservice/AbstractInputMethodService;-removeStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/inputmethodservice/AbstractInputMethodService;-sendStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/inputmethodservice/AbstractInputMethodService;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/Application;-removeStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/Application;-sendStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/Application;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/Application;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/ListActivity;-removeStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/ListActivity;-sendStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/ListActivity;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/Service;-removeStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/Service;-sendStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/Service;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/content/MutableContextWrapper;-removeStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/content/MutableContextWrapper;-sendStickyBroadcast-(Landroid/content/Intent;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/content/MutableContextWrapper;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)": - "BROADCAST_STICKY", + "BROADCAST_STICKY", "Landroid/app/IActivityManager$Stub$Proxy;-forceStopPackage-(Ljava/lang/String;)": - "FORCE_STOP_PACKAGES", + "FORCE_STOP_PACKAGES", "Landroid/app/ActivityManagerNative;-forceStopPackage-(Ljava/lang/String;)": - "FORCE_STOP_PACKAGES", + "FORCE_STOP_PACKAGES", "Landroid/app/ActivityManager;-forceStopPackage-(Ljava/lang/String;)": - "FORCE_STOP_PACKAGES", + "FORCE_STOP_PACKAGES", "Landroid/app/IActivityManager$Stub$Proxy;-killBackgroundProcesses-(Ljava/lang/String;)": - "KILL_BACKGROUND_PROCESSES", + "KILL_BACKGROUND_PROCESSES", "Landroid/app/ActivityManager;-killBackgroundProcesses-(Ljava/lang/String;)": - "KILL_BACKGROUND_PROCESSES", + "KILL_BACKGROUND_PROCESSES", "Landroid/app/AlarmManager;-setTimeZone-(Ljava/lang/String;)": "SET_TIME_ZONE", "Landroid/app/AlarmManager;-setTimeZone-(Ljava/lang/String;)": "SET_TIME_ZONE", "Landroid/app/IAlarmManager$Stub$Proxy;-setTimeZone-(Ljava/lang/String;)": - "SET_TIME_ZONE", + "SET_TIME_ZONE", "Landroid/server/BluetoothA2dpService;-connectSink-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/server/BluetoothA2dpService;-disconnectSink-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/server/BluetoothA2dpService;-resumeSink-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/server/BluetoothA2dpService;-setSinkPriority-(Landroid/bluetooth/BluetoothDevice; I)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/server/BluetoothA2dpService;-setSinkPriority-(Landroid/bluetooth/BluetoothDevice; I)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/server/BluetoothA2dpService;-suspendSink-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/BluetoothPbap;-disconnect-()": "BLUETOOTH_ADMIN", "Landroid/bluetooth/IBluetoothA2dp$Stub$Proxy;-connectSink-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/IBluetoothA2dp$Stub$Proxy;-disconnectSink-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/IBluetoothA2dp$Stub$Proxy;-resumeSink-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/IBluetoothA2dp$Stub$Proxy;-setSinkPriority-(Landroid/bluetooth/BluetoothDevice; I)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/IBluetoothA2dp$Stub$Proxy;-suspendSink-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/BluetoothAdapter;-cancelDiscovery-()": "BLUETOOTH_ADMIN", "Landroid/bluetooth/BluetoothAdapter;-disable-()": "BLUETOOTH_ADMIN", "Landroid/bluetooth/BluetoothAdapter;-enable-()": "BLUETOOTH_ADMIN", "Landroid/bluetooth/BluetoothAdapter;-setName-(Ljava/lang/String;)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/BluetoothAdapter;-startDiscovery-()": "BLUETOOTH_ADMIN", "Landroid/bluetooth/BluetoothAdapter;-cancelDiscovery-()": "BLUETOOTH_ADMIN", "Landroid/bluetooth/BluetoothAdapter;-disable-()": "BLUETOOTH_ADMIN", "Landroid/bluetooth/BluetoothAdapter;-enable-()": "BLUETOOTH_ADMIN", "Landroid/bluetooth/BluetoothAdapter;-setDiscoverableTimeout-(I)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/BluetoothAdapter;-setName-(Ljava/lang/String;)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/BluetoothAdapter;-startDiscovery-()": "BLUETOOTH_ADMIN", "Landroid/server/BluetoothService;-cancelBondProcess-(Ljava/lang/String;)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/server/BluetoothService;-cancelDiscovery-()": "BLUETOOTH_ADMIN", "Landroid/server/BluetoothService;-cancelPairingUserInput-(Ljava/lang/String;)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/server/BluetoothService;-createBond-(Ljava/lang/String;)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/server/BluetoothService;-disable-()": "BLUETOOTH_ADMIN", "Landroid/server/BluetoothService;-disable-(B)": "BLUETOOTH_ADMIN", "Landroid/server/BluetoothService;-enable-()": "BLUETOOTH_ADMIN", "Landroid/server/BluetoothService;-enable-(B)": "BLUETOOTH_ADMIN", "Landroid/server/BluetoothService;-removeBond-(Ljava/lang/String;)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/server/BluetoothService;-setDiscoverableTimeout-(I)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/server/BluetoothService;-setName-(Ljava/lang/String;)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/server/BluetoothService;-setPairingConfirmation-(Ljava/lang/String; B)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/server/BluetoothService;-setPasskey-(Ljava/lang/String; I)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/server/BluetoothService;-setPin-(Ljava/lang/String; [L;)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/server/BluetoothService;-setTrust-(Ljava/lang/String; B)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/server/BluetoothService;-startDiscovery-()": "BLUETOOTH_ADMIN", "Landroid/bluetooth/BluetoothHeadset;-connectHeadset-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/BluetoothHeadset;-disconnectHeadset-()": "BLUETOOTH_ADMIN", "Landroid/bluetooth/BluetoothHeadset;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/IBluetoothHeadset$Stub$Proxy;-connectHeadset-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/IBluetoothHeadset$Stub$Proxy;-disconnectHeadset-()": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/IBluetoothHeadset$Stub$Proxy;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/BluetoothDevice;-cancelBondProcess-()": "BLUETOOTH_ADMIN", "Landroid/bluetooth/BluetoothDevice;-cancelPairingUserInput-()": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/BluetoothDevice;-createBond-()": "BLUETOOTH_ADMIN", "Landroid/bluetooth/BluetoothDevice;-removeBond-()": "BLUETOOTH_ADMIN", "Landroid/bluetooth/BluetoothDevice;-setPairingConfirmation-(B)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/BluetoothDevice;-setPasskey-(I)": "BLUETOOTH_ADMIN", "Landroid/bluetooth/BluetoothDevice;-setPin-([L;)": "BLUETOOTH_ADMIN", "Landroid/bluetooth/IBluetoothPbap$Stub$Proxy;-connect-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/IBluetoothPbap$Stub$Proxy;-disconnect-()": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/BluetoothA2dp;-connectSink-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/BluetoothA2dp;-disconnectSink-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/BluetoothA2dp;-resumeSink-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/BluetoothA2dp;-setSinkPriority-(Landroid/bluetooth/BluetoothDevice; I)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/BluetoothA2dp;-suspendSink-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-cancelBondProcess-(Ljava/lang/String;)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-cancelDiscovery-()": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-cancelPairingUserInput-(Ljava/lang/String;)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-createBond-(Ljava/lang/String;)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-disable-(B)": "BLUETOOTH_ADMIN", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-enable-()": "BLUETOOTH_ADMIN", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-removeBond-(Ljava/lang/String;)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-setDiscoverableTimeout-(I)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-setName-(Ljava/lang/String;)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-setPairingConfirmation-(Ljava/lang/String; B)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-setPasskey-(Ljava/lang/String; I)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-setPin-(Ljava/lang/String; [L;)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-setTrust-(Ljava/lang/String; B)": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-startDiscovery-()": - "BLUETOOTH_ADMIN", + "BLUETOOTH_ADMIN", "Landroid/view/IWindowManager$Stub$Proxy;-injectKeyEvent-(Landroid/view/KeyEvent; B)": - "INJECT_EVENTS", + "INJECT_EVENTS", "Landroid/view/IWindowManager$Stub$Proxy;-injectPointerEvent-(Landroid/view/MotionEvent; B)": - "INJECT_EVENTS", + "INJECT_EVENTS", "Landroid/view/IWindowManager$Stub$Proxy;-injectTrackballEvent-(Landroid/view/MotionEvent; B)": - "INJECT_EVENTS", + "INJECT_EVENTS", "Landroid/app/Instrumentation;-invokeContextMenuAction-(Landroid/app/Activity; I I)": - "INJECT_EVENTS", + "INJECT_EVENTS", "Landroid/app/Instrumentation;-sendCharacterSync-(I)": "INJECT_EVENTS", "Landroid/app/Instrumentation;-sendKeyDownUpSync-(I)": "INJECT_EVENTS", "Landroid/app/Instrumentation;-sendKeySync-(Landroid/view/KeyEvent;)": - "INJECT_EVENTS", + "INJECT_EVENTS", "Landroid/app/Instrumentation;-sendPointerSync-(Landroid/view/MotionEvent;)": - "INJECT_EVENTS", + "INJECT_EVENTS", "Landroid/app/Instrumentation;-sendStringSync-(Ljava/lang/String;)": - "INJECT_EVENTS", + "INJECT_EVENTS", "Landroid/app/Instrumentation;-sendTrackballEventSync-(Landroid/view/MotionEvent;)": - "INJECT_EVENTS", + "INJECT_EVENTS", "Landroid/hardware/Camera/ErrorCallback;-onError-(I Landroid/hardware/Camera;)": - "CAMERA", + "CAMERA", "Landroid/media/MediaRecorder;-setVideoSource-(I)": "CAMERA", "Landroid/view/KeyEvent;-KEYCODE_CAMERA-I": "CAMERA", "Landroid/bluetooth/BluetoothClass/Device;-AUDIO_VIDEO_VIDEO_CAMERA-I": - "CAMERA", + "CAMERA", "Landroid/provider/MediaStore;-INTENT_ACTION_STILL_IMAGE_CAMERA-Ljava/lang/String;": - "CAMERA", + "CAMERA", "Landroid/provider/MediaStore;-INTENT_ACTION_VIDEO_CAMERA-Ljava/lang/String;": - "CAMERA", + "CAMERA", "Landroid/hardware/Camera/CameraInfo;-CAMERA_FACING_BACK-I": "CAMERA", "Landroid/hardware/Camera/CameraInfo;-CAMERA_FACING_FRONT-I": "CAMERA", "Landroid/hardware/Camera/CameraInfo;-facing-I": "CAMERA", "Landroid/provider/ContactsContract/StatusColumns;-CAPABILITY_HAS_CAMERA-I": - "CAMERA", + "CAMERA", "Landroid/hardware/Camera/Parameters;-setRotation-(I)": "CAMERA", "Landroid/media/MediaRecorder/VideoSource;-CAMERA-I": "CAMERA", "Landroid/content/Intent;-IntentResolution-Ljava/lang/String;": "CAMERA", "Landroid/content/Intent;-ACTION_CAMERA_BUTTON-Ljava/lang/String;": "CAMERA", "Landroid/content/pm/PackageManager;-FEATURE_CAMERA-Ljava/lang/String;": - "CAMERA", + "CAMERA", "Landroid/content/pm/PackageManager;-FEATURE_CAMERA_AUTOFOCUS-Ljava/lang/String;": - "CAMERA", + "CAMERA", "Landroid/content/pm/PackageManager;-FEATURE_CAMERA_FLASH-Ljava/lang/String;": - "CAMERA", + "CAMERA", "Landroid/content/pm/PackageManager;-FEATURE_CAMERA_FRONT-Ljava/lang/String;": - "CAMERA", + "CAMERA", "Landroid/hardware/Camera;-CAMERA_ERROR_SERVER_DIED-I": "CAMERA", "Landroid/hardware/Camera;-CAMERA_ERROR_UNKNOWN-I": "CAMERA", "Landroid/hardware/Camera;-setDisplayOrientation-(I)": "CAMERA", @@ -4128,142 +4128,142 @@ DVM_PERMISSIONS_BY_ELEMENT = { "Landroid/hardware/Camera;-open-()": "CAMERA", "Landroid/app/Activity;-clearWallpaper-()": "SET_WALLPAPER", "Landroid/app/Activity;-setWallpaper-(Landroid/graphics/Bitmap;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/app/Activity;-setWallpaper-(Ljava/io/InputStream;)": "SET_WALLPAPER", "Landroid/app/ExpandableListActivity;-clearWallpaper-()": "SET_WALLPAPER", "Landroid/app/ExpandableListActivity;-setWallpaper-(Landroid/graphics/Bitmap;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/app/ExpandableListActivity;-setWallpaper-(Ljava/io/InputStream;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/accessibilityservice/AccessibilityService;-clearWallpaper-()": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/accessibilityservice/AccessibilityService;-setWallpaper-(Landroid/graphics/Bitmap;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/accessibilityservice/AccessibilityService;-setWallpaper-(Ljava/io/InputStream;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/accounts/GrantCredentialsPermissionActivity;-clearWallpaper-()": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/accounts/GrantCredentialsPermissionActivity;-setWallpaper-(Landroid/graphics/Bitmap;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/accounts/GrantCredentialsPermissionActivity;-setWallpaper-(Ljava/io/InputStream;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/app/backup/BackupAgent;-clearWallpaper-()": "SET_WALLPAPER", "Landroid/app/backup/BackupAgent;-setWallpaper-(Landroid/graphics/Bitmap;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/app/backup/BackupAgent;-setWallpaper-(Ljava/io/InputStream;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/service/wallpaper/WallpaperService;-clearWallpaper-()": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/service/wallpaper/WallpaperService;-setWallpaper-(Landroid/graphics/Bitmap;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/service/wallpaper/WallpaperService;-setWallpaper-(Ljava/io/InputStream;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/app/backup/BackupAgentHelper;-clearWallpaper-()": "SET_WALLPAPER", "Landroid/app/backup/BackupAgentHelper;-setWallpaper-(Landroid/graphics/Bitmap;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/app/backup/BackupAgentHelper;-setWallpaper-(Ljava/io/InputStream;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/accounts/AccountAuthenticatorActivity;-clearWallpaper-()": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/accounts/AccountAuthenticatorActivity;-setWallpaper-(Landroid/graphics/Bitmap;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/accounts/AccountAuthenticatorActivity;-setWallpaper-(Ljava/io/InputStream;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/app/IWallpaperManager$Stub$Proxy;-setWallpaper-(Ljava/lang/String;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/app/ActivityGroup;-clearWallpaper-()": "SET_WALLPAPER", "Landroid/app/ActivityGroup;-setWallpaper-(Landroid/graphics/Bitmap;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/app/ActivityGroup;-setWallpaper-(Ljava/io/InputStream;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/content/ContextWrapper;-clearWallpaper-()": "SET_WALLPAPER", "Landroid/content/ContextWrapper;-setWallpaper-(Landroid/graphics/Bitmap;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/content/ContextWrapper;-setWallpaper-(Ljava/io/InputStream;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/app/WallpaperManager;-setBitmap-(Landroid/graphics/Bitmap;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/app/WallpaperManager;-clear-()": "SET_WALLPAPER", "Landroid/app/WallpaperManager;-setBitmap-(Landroid/graphics/Bitmap;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/app/WallpaperManager;-setResource-(I)": "SET_WALLPAPER", "Landroid/app/WallpaperManager;-setStream-(Ljava/io/InputStream;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/app/ContextImpl;-clearWallpaper-()": "SET_WALLPAPER", "Landroid/app/ContextImpl;-setWallpaper-(Landroid/graphics/Bitmap;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/app/ContextImpl;-setWallpaper-(Ljava/io/InputStream;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/app/AliasActivity;-clearWallpaper-()": "SET_WALLPAPER", "Landroid/app/AliasActivity;-setWallpaper-(Landroid/graphics/Bitmap;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/app/AliasActivity;-setWallpaper-(Ljava/io/InputStream;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/content/Context;-clearWallpaper-()": "SET_WALLPAPER", "Landroid/content/Context;-setWallpaper-(Landroid/graphics/Bitmap;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/content/Context;-setWallpaper-(Ljava/io/InputStream;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/service/urlrenderer/UrlRendererService;-clearWallpaper-()": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/service/urlrenderer/UrlRendererService;-setWallpaper-(Landroid/graphics/Bitmap;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/service/urlrenderer/UrlRendererService;-setWallpaper-(Ljava/io/InputStream;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/app/FullBackupAgent;-clearWallpaper-()": "SET_WALLPAPER", "Landroid/app/FullBackupAgent;-setWallpaper-(Landroid/graphics/Bitmap;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/app/FullBackupAgent;-setWallpaper-(Ljava/io/InputStream;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/app/TabActivity;-clearWallpaper-()": "SET_WALLPAPER", "Landroid/app/TabActivity;-setWallpaper-(Landroid/graphics/Bitmap;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/app/TabActivity;-setWallpaper-(Ljava/io/InputStream;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/view/ContextThemeWrapper;-clearWallpaper-()": "SET_WALLPAPER", "Landroid/view/ContextThemeWrapper;-setWallpaper-(Landroid/graphics/Bitmap;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/view/ContextThemeWrapper;-setWallpaper-(Ljava/io/InputStream;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/speech/RecognitionService;-clearWallpaper-()": "SET_WALLPAPER", "Landroid/speech/RecognitionService;-setWallpaper-(Landroid/graphics/Bitmap;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/speech/RecognitionService;-setWallpaper-(Ljava/io/InputStream;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/app/IntentService;-clearWallpaper-()": "SET_WALLPAPER", "Landroid/app/IntentService;-setWallpaper-(Landroid/graphics/Bitmap;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/app/IntentService;-setWallpaper-(Ljava/io/InputStream;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/inputmethodservice/AbstractInputMethodService;-clearWallpaper-()": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/inputmethodservice/AbstractInputMethodService;-setWallpaper-(Landroid/graphics/Bitmap;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/inputmethodservice/AbstractInputMethodService;-setWallpaper-(Ljava/io/InputStream;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/app/Application;-clearWallpaper-()": "SET_WALLPAPER", "Landroid/app/Application;-setWallpaper-(Landroid/graphics/Bitmap;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/app/Application;-setWallpaper-(Ljava/io/InputStream;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/app/ListActivity;-clearWallpaper-()": "SET_WALLPAPER", "Landroid/app/ListActivity;-setWallpaper-(Landroid/graphics/Bitmap;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/app/ListActivity;-setWallpaper-(Ljava/io/InputStream;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/app/Service;-clearWallpaper-()": "SET_WALLPAPER", "Landroid/app/Service;-setWallpaper-(Landroid/graphics/Bitmap;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/app/Service;-setWallpaper-(Ljava/io/InputStream;)": "SET_WALLPAPER", "Landroid/content/MutableContextWrapper;-clearWallpaper-()": "SET_WALLPAPER", "Landroid/content/MutableContextWrapper;-setWallpaper-(Landroid/graphics/Bitmap;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/content/MutableContextWrapper;-setWallpaper-(Ljava/io/InputStream;)": - "SET_WALLPAPER", + "SET_WALLPAPER", "Landroid/net/wifi/IWifiManager$Stub$Proxy;-acquireWifiLock-(Landroid/os/IBinder; I Ljava/lang/String;)": - "WAKE_LOCK", + "WAKE_LOCK", "Landroid/net/wifi/IWifiManager$Stub$Proxy;-releaseWifiLock-(Landroid/os/IBinder;)": - "WAKE_LOCK", + "WAKE_LOCK", "Landroid/bluetooth/HeadsetBase;-acquireWakeLock-()": "WAKE_LOCK", "Landroid/bluetooth/HeadsetBase;-finalize-()": "WAKE_LOCK", "Landroid/bluetooth/HeadsetBase;-handleInput-(Ljava/lang/String;)": "WAKE_LOCK", @@ -4273,7 +4273,7 @@ DVM_PERMISSIONS_BY_ELEMENT = { "Landroid/os/PowerManager$WakeLock;-release-()": "WAKE_LOCK", "Landroid/os/PowerManager$WakeLock;-release-(I)": "WAKE_LOCK", "Landroid/media/MediaPlayer;-setWakeMode-(Landroid/content/Context; I)": - "WAKE_LOCK", + "WAKE_LOCK", "Landroid/media/MediaPlayer;-start-()": "WAKE_LOCK", "Landroid/media/MediaPlayer;-stayAwake-(B)": "WAKE_LOCK", "Landroid/media/MediaPlayer;-stop-()": "WAKE_LOCK", @@ -4284,18 +4284,18 @@ DVM_PERMISSIONS_BY_ELEMENT = { "Landroid/bluetooth/ScoSocket;-releaseWakeLockNow-()": "WAKE_LOCK", "Landroid/media/AsyncPlayer;-acquireWakeLock-()": "WAKE_LOCK", "Landroid/media/AsyncPlayer;-enqueueLocked-(Landroid/media/AsyncPlayer$Command;)": - "WAKE_LOCK", + "WAKE_LOCK", "Landroid/media/AsyncPlayer;-play-(Landroid/content/Context; Landroid/net/Uri; B I)": - "WAKE_LOCK", + "WAKE_LOCK", "Landroid/media/AsyncPlayer;-releaseWakeLock-()": "WAKE_LOCK", "Landroid/media/AsyncPlayer;-stop-()": "WAKE_LOCK", "Landroid/net/wifi/WifiManager$WifiLock;-acquire-()": "WAKE_LOCK", "Landroid/net/wifi/WifiManager$WifiLock;-finalize-()": "WAKE_LOCK", "Landroid/net/wifi/WifiManager$WifiLock;-release-()": "WAKE_LOCK", "Landroid/os/IPowerManager$Stub$Proxy;-acquireWakeLock-(I Landroid/os/IBinder; Ljava/lang/String;)": - "WAKE_LOCK", + "WAKE_LOCK", "Landroid/os/IPowerManager$Stub$Proxy;-releaseWakeLock-(Landroid/os/IBinder; I)": - "WAKE_LOCK", + "WAKE_LOCK", "Landroid/net/sip/SipAudioCall;-startAudio-()": "WAKE_LOCK", "Landroid/os/PowerManager;-ACQUIRE_CAUSES_WAKEUP-I": "WAKE_LOCK", "Landroid/os/PowerManager;-FULL_WAKE_LOCK-I": "WAKE_LOCK", @@ -4305,105 +4305,105 @@ DVM_PERMISSIONS_BY_ELEMENT = { "Landroid/os/PowerManager;-SCREEN_DIM_WAKE_LOCK-I": "WAKE_LOCK", "Landroid/os/PowerManager;-newWakeLock-(I Ljava/lang/String;)": "WAKE_LOCK", "Landroid/accounts/AccountManager;-addAccount-(Ljava/lang/String; Ljava/lang/String; [Ljava/lang/String; Landroid/os/Bundle; Landroid/app/Activity; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)": - "MANAGE_ACCOUNTS", + "MANAGE_ACCOUNTS", "Landroid/accounts/AccountManager;-clearPassword-(Landroid/accounts/Account;)": - "MANAGE_ACCOUNTS", + "MANAGE_ACCOUNTS", "Landroid/accounts/AccountManager;-confirmCredentials-(Landroid/accounts/Account; Landroid/os/Bundle; Landroid/app/Activity; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)": - "MANAGE_ACCOUNTS", + "MANAGE_ACCOUNTS", "Landroid/accounts/AccountManager;-editProperties-(Ljava/lang/String; Landroid/app/Activity; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)": - "MANAGE_ACCOUNTS", + "MANAGE_ACCOUNTS", "Landroid/accounts/AccountManager;-getAuthTokenByFeatures-(Ljava/lang/String; Ljava/lang/String; [Ljava/lang/String; Landroid/app/Activity; Landroid/os/Bundle; Landroid/os/Bundle; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)": - "MANAGE_ACCOUNTS", + "MANAGE_ACCOUNTS", "Landroid/accounts/AccountManager;-invalidateAuthToken-(Ljava/lang/String; Ljava/lang/String;)": - "MANAGE_ACCOUNTS", + "MANAGE_ACCOUNTS", "Landroid/accounts/AccountManager;-removeAccount-(Landroid/accounts/Account; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)": - "MANAGE_ACCOUNTS", + "MANAGE_ACCOUNTS", "Landroid/accounts/AccountManager;-updateCredentials-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle; Landroid/app/Activity; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)": - "MANAGE_ACCOUNTS", + "MANAGE_ACCOUNTS", "Landroid/accounts/AccountManager;-addAccount-(Ljava/lang/String; Ljava/lang/String; [L[Ljava/lang/Strin; Landroid/os/Bundle; Landroid/app/Activity; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)": - "MANAGE_ACCOUNTS", + "MANAGE_ACCOUNTS", "Landroid/accounts/AccountManager;-clearPassword-(Landroid/accounts/Account;)": - "MANAGE_ACCOUNTS", + "MANAGE_ACCOUNTS", "Landroid/accounts/AccountManager;-confirmCredentials-(Landroid/accounts/Account; Landroid/os/Bundle; Landroid/app/Activity; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)": - "MANAGE_ACCOUNTS", + "MANAGE_ACCOUNTS", "Landroid/accounts/AccountManager;-editProperties-(Ljava/lang/String; Landroid/app/Activity; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)": - "MANAGE_ACCOUNTS", + "MANAGE_ACCOUNTS", "Landroid/accounts/AccountManager;-invalidateAuthToken-(Ljava/lang/String; Ljava/lang/String;)": - "MANAGE_ACCOUNTS", + "MANAGE_ACCOUNTS", "Landroid/accounts/AccountManager;-removeAccount-(Landroid/accounts/Account; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)": - "MANAGE_ACCOUNTS", + "MANAGE_ACCOUNTS", "Landroid/accounts/AccountManager;-updateCredentials-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle; Landroid/app/Activity; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)": - "MANAGE_ACCOUNTS", + "MANAGE_ACCOUNTS", "Landroid/accounts/AccountManagerService;-addAcount-(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; Ljava/lang/String; [L[Ljava/lang/Strin; B Landroid/os/Bundle;)": - "MANAGE_ACCOUNTS", + "MANAGE_ACCOUNTS", "Landroid/accounts/AccountManagerService;-checkManageAccountsOrUseCredentialsPermissions-()": - "MANAGE_ACCOUNTS", + "MANAGE_ACCOUNTS", "Landroid/accounts/AccountManagerService;-checkManageAccountsPermission-()": - "MANAGE_ACCOUNTS", + "MANAGE_ACCOUNTS", "Landroid/accounts/AccountManagerService;-clearPassword-(Landroid/accounts/Account;)": - "MANAGE_ACCOUNTS", + "MANAGE_ACCOUNTS", "Landroid/accounts/AccountManagerService;-confirmCredentials-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Landroid/os/Bundle; B)": - "MANAGE_ACCOUNTS", + "MANAGE_ACCOUNTS", "Landroid/accounts/AccountManagerService;-editProperties-(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; B)": - "MANAGE_ACCOUNTS", + "MANAGE_ACCOUNTS", "Landroid/accounts/AccountManagerService;-invalidateAuthToken-(Ljava/lang/String; Ljava/lang/String;)": - "MANAGE_ACCOUNTS", + "MANAGE_ACCOUNTS", "Landroid/accounts/AccountManagerService;-removeAccount-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account;)": - "MANAGE_ACCOUNTS", + "MANAGE_ACCOUNTS", "Landroid/accounts/AccountManagerService;-updateCredentials-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Ljava/lang/String; B Landroid/os/Bundle;)": - "MANAGE_ACCOUNTS", + "MANAGE_ACCOUNTS", "Landroid/accounts/IAccountManager$Stub$Proxy;-addAcount-(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; Ljava/lang/String; [L[Ljava/lang/Strin; B Landroid/os/Bundle;)": - "MANAGE_ACCOUNTS", + "MANAGE_ACCOUNTS", "Landroid/accounts/IAccountManager$Stub$Proxy;-clearPassword-(Landroid/accounts/Account;)": - "MANAGE_ACCOUNTS", + "MANAGE_ACCOUNTS", "Landroid/accounts/IAccountManager$Stub$Proxy;-confirmCredentials-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Landroid/os/Bundle; B)": - "MANAGE_ACCOUNTS", + "MANAGE_ACCOUNTS", "Landroid/accounts/IAccountManager$Stub$Proxy;-editProperties-(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; B)": - "MANAGE_ACCOUNTS", + "MANAGE_ACCOUNTS", "Landroid/accounts/IAccountManager$Stub$Proxy;-invalidateAuthToken-(Ljava/lang/String; Ljava/lang/String;)": - "MANAGE_ACCOUNTS", + "MANAGE_ACCOUNTS", "Landroid/accounts/IAccountManager$Stub$Proxy;-removeAccount-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account;)": - "MANAGE_ACCOUNTS", + "MANAGE_ACCOUNTS", "Landroid/accounts/IAccountManager$Stub$Proxy;-updateCredentials-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Ljava/lang/String; B Landroid/os/Bundle;)": - "MANAGE_ACCOUNTS", + "MANAGE_ACCOUNTS", "Landroid/provider/Calendar$CalendarAlerts;-insert-(Landroid/content/ContentResolver; J J J J I)": - "WRITE_CALENDAR", + "WRITE_CALENDAR", "Landroid/provider/Calendar$Calendars;-delete-(Landroid/content/ContentResolver; Ljava/lang/String; [L[Ljava/lang/Strin;)": - "WRITE_CALENDAR", + "WRITE_CALENDAR", "Landroid/provider/Calendar$Calendars;-deleteCalendarsForAccount-(Landroid/content/ContentResolver; Landroid/accounts/Account;)": - "WRITE_CALENDAR", + "WRITE_CALENDAR", "Landroid/appwidget/AppWidgetManager;-bindAppWidgetId-(I Landroid/content/ComponentName;)": - "BIND_APPWIDGET", + "BIND_APPWIDGET", "Lcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;-bindAppWidgetId-(I LComponentName;)": - "BIND_APPWIDGET", + "BIND_APPWIDGET", "Landroid/os/storage/IMountService$Stub$Proxy;-mountSecureContainer-(Ljava/lang/String; Ljava/lang/String; I)": - "ASEC_MOUNT_UNMOUNT", + "ASEC_MOUNT_UNMOUNT", "Landroid/os/storage/IMountService$Stub$Proxy;-unmountSecureContainer-(Ljava/lang/String; B)": - "ASEC_MOUNT_UNMOUNT", + "ASEC_MOUNT_UNMOUNT", "Landroid/app/ContextImpl$ApplicationPackageManager;-addPreferredActivity-(LIntentFilter; I [LComponentName; LComponentName;)": - "SET_PREFERRED_APPLICATIONS", + "SET_PREFERRED_APPLICATIONS", "Landroid/app/ContextImpl$ApplicationPackageManager;-clearPackagePreferredActivities-(Ljava/lang/String;)": - "SET_PREFERRED_APPLICATIONS", + "SET_PREFERRED_APPLICATIONS", "Landroid/app/ContextImpl$ApplicationPackageManager;-replacePreferredActivity-(LIntentFilter; I [LComponentName; LComponentName;)": - "SET_PREFERRED_APPLICATIONS", + "SET_PREFERRED_APPLICATIONS", "Landroid/app/ContextImpl$ApplicationPackageManager;-addPreferredActivity-(Landroid/content/IntentFilter; I [Landroid/content/ComponentName; Landroid/content/ComponentName;)": - "SET_PREFERRED_APPLICATIONS", + "SET_PREFERRED_APPLICATIONS", "Landroid/app/ContextImpl$ApplicationPackageManager;-clearPackagePreferredActivities-(Ljava/lang/String;)": - "SET_PREFERRED_APPLICATIONS", + "SET_PREFERRED_APPLICATIONS", "Landroid/app/ContextImpl$ApplicationPackageManager;-replacePreferredActivity-(Landroid/content/IntentFilter; I [Landroid/content/ComponentName; Landroid/content/ComponentName;)": - "SET_PREFERRED_APPLICATIONS", + "SET_PREFERRED_APPLICATIONS", "Landroid/content/pm/PackageManager;-addPreferredActivity-(Landroid/content/IntentFilter; I [Landroid/content/ComponentName; Landroid/content/ComponentName;)": - "SET_PREFERRED_APPLICATIONS", + "SET_PREFERRED_APPLICATIONS", "Landroid/content/pm/PackageManager;-clearPackagePreferredActivities-(Ljava/lang/String;)": - "SET_PREFERRED_APPLICATIONS", + "SET_PREFERRED_APPLICATIONS", "Landroid/content/pm/PackageManager;-replacePreferredActivity-(Landroid/content/IntentFilter; I [Landroid/content/ComponentName; Landroid/content/ComponentName;)": - "SET_PREFERRED_APPLICATIONS", + "SET_PREFERRED_APPLICATIONS", "Landroid/content/pm/IPackageManager$Stub$Proxy;-addPreferredActivity-(Landroid/content/IntentFilter; I [L[Landroid/content/ComponentNam; Landroid/content/ComponentName;)": - "SET_PREFERRED_APPLICATIONS", + "SET_PREFERRED_APPLICATIONS", "Landroid/content/pm/IPackageManager$Stub$Proxy;-clearPackagePreferredActivities-(Ljava/lang/String;)": - "SET_PREFERRED_APPLICATIONS", + "SET_PREFERRED_APPLICATIONS", "Landroid/content/pm/IPackageManager$Stub$Proxy;-replacePreferredActivity-(Landroid/content/IntentFilter; I [L[Landroid/content/ComponentNam; Landroid/content/ComponentName;)": - "SET_PREFERRED_APPLICATIONS", + "SET_PREFERRED_APPLICATIONS", "Landroid/inputmethodservice/InputMethodService;-SoftInputView-I": "NFC", "Landroid/inputmethodservice/InputMethodService;-CandidatesView-I": "NFC", "Landroid/inputmethodservice/InputMethodService;-FullscreenMode-I": "NFC", @@ -4418,13 +4418,13 @@ DVM_PERMISSIONS_BY_ELEMENT = { "Landroid/nfc/tech/NfcB;-transceive-([B)": "NFC", "Landroid/nfc/NfcAdapter;-ACTION_TECH_DISCOVERED-Ljava/lang/String;": "NFC", "Landroid/nfc/NfcAdapter;-disableForegroundDispatch-(Landroid/app/Activity;)": - "NFC", + "NFC", "Landroid/nfc/NfcAdapter;-disableForegroundNdefPush-(Landroid/app/Activity;)": - "NFC", + "NFC", "Landroid/nfc/NfcAdapter;-enableForegroundDispatch-(Landroid/app/Activity; Landroid/app/PendingIntent; [Landroid/content/IntentFilter; [[Ljava/lang/String[];)": - "NFC", + "NFC", "Landroid/nfc/NfcAdapter;-enableForegroundNdefPush-(Landroid/app/Activity; Landroid/nfc/NdefMessage;)": - "NFC", + "NFC", "Landroid/nfc/NfcAdapter;-getDefaultAdapter-()": "NFC", "Landroid/nfc/NfcAdapter;-getDefaultAdapter-(Landroid/content/Context;)": "NFC", "Landroid/nfc/NfcAdapter;-isEnabled-()": "NFC", @@ -4436,7 +4436,7 @@ DVM_PERMISSIONS_BY_ELEMENT = { "Landroid/nfc/tech/NdefFormatable;-connect-()": "NFC", "Landroid/nfc/tech/NdefFormatable;-format-(Landroid/nfc/NdefMessage;)": "NFC", "Landroid/nfc/tech/NdefFormatable;-formatReadOnly-(Landroid/nfc/NdefMessage;)": - "NFC", + "NFC", "Landroid/app/Activity;-Fragments-I": "NFC", "Landroid/app/Activity;-ActivityLifecycle-I": "NFC", "Landroid/app/Activity;-ConfigurationChanges-I": "NFC", @@ -4493,64 +4493,64 @@ DVM_PERMISSIONS_BY_ELEMENT = { "Landroid/nfc/tech/IsoDep;-setTimeout-(I)": "NFC", "Landroid/nfc/tech/IsoDep;-transceive-([B)": "NFC", "Lcom/android/internal/telephony/ITelephony$Stub$Proxy;-call-(Ljava/lang/String;)": - "CALL_PHONE", + "CALL_PHONE", "Lcom/android/internal/telephony/ITelephony$Stub$Proxy;-endCall-()": "CALL_PHONE", "Lcom/android/http/multipart/FilePart;-sendData-(Ljava/io/OutputStream;)": - "INTERNET", + "INTERNET", "Lcom/android/http/multipart/FilePart;-sendDispositionHeader-(Ljava/io/OutputStream;)": - "INTERNET", + "INTERNET", "Ljava/net/HttpURLConnection;--(Ljava/net/URL;)": "INTERNET", "Ljava/net/HttpURLConnection;-connect-()": "INTERNET", "Landroid/webkit/WebSettings;-setBlockNetworkLoads-(B)": "INTERNET", "Landroid/webkit/WebSettings;-verifyNetworkAccess-()": "INTERNET", "Lorg/apache/http/impl/client/DefaultHttpClient;--()": "INTERNET", "Lorg/apache/http/impl/client/DefaultHttpClient;--(Lorg/apache/http/params/HttpParams;)": - "INTERNET", + "INTERNET", "Lorg/apache/http/impl/client/DefaultHttpClient;--(Lorg/apache/http/conn/ClientConnectionManager; Lorg/apache/http/params/HttpParams;)": - "INTERNET", + "INTERNET", "Lorg/apache/http/impl/client/DefaultHttpClient;-execute-(Lorg/apache/http/client/methods/HttpUriRequest;)": - "INTERNET", + "INTERNET", "Lorg/apache/http/impl/client/DefaultHttpClient;-execute-(Lorg/apache/http/client/methods/HttpUriRequest; Lorg/apache/http/client/ResponseHandler; Lorg/apache/http/protocol/HttpContext;)": - "INTERNET", + "INTERNET", "Lorg/apache/http/impl/client/DefaultHttpClient;-execute-(Lorg/apache/http/HttpHost; Lorg/apache/http/client/methods/HttpUriRequest; Lorg/apache/http/client/ResponseHandler; Lorg/apache/http/protocol/HttpContext;)": - "INTERNET", + "INTERNET", "Lorg/apache/http/impl/client/DefaultHttpClient;-execute-(Lorg/apache/http/client/methods/HttpUriRequest; Lorg/apache/http/protocol/HttpContext;)": - "INTERNET", + "INTERNET", "Lorg/apache/http/impl/client/DefaultHttpClient;-execute-(Lorg/apache/http/client/methods/HttpUriRequest; Lorg/apache/http/client/ResponseHandler;)": - "INTERNET", + "INTERNET", "Lorg/apache/http/impl/client/DefaultHttpClient;-execute-(Lorg/apache/http/HttpHost; Lorg/apache/http/client/methods/HttpUriRequest; Lorg/apache/http/client/ResponseHandler;)": - "INTERNET", + "INTERNET", "Lorg/apache/http/impl/client/DefaultHttpClient;-execute-(Lorg/apache/http/HttpHost; Lorg/apache/http/client/methods/HttpUriRequest;)": - "INTERNET", + "INTERNET", "Lorg/apache/http/impl/client/DefaultHttpClient;-execute-(Lorg/apache/http/HttpHost; Lorg/apache/http/client/methods/HttpUriRequest; Lorg/apache/http/protocol/HttpContext;)": - "INTERNET", + "INTERNET", "Lorg/apache/http/impl/client/HttpClient;-execute-(Lorg/apache/http/client/methods/HttpUriRequest;)": - "INTERNET", + "INTERNET", "Lorg/apache/http/impl/client/HttpClient;-execute-(Lorg/apache/http/client/methods/HttpUriRequest; Lorg/apache/http/client/ResponseHandler; Lorg/apache/http/protocol/HttpContext;)": - "INTERNET", + "INTERNET", "Lorg/apache/http/impl/client/HttpClient;-execute-(Lorg/apache/http/HttpHost; Lorg/apache/http/client/methods/HttpUriRequest; Lorg/apache/http/client/ResponseHandler; Lorg/apache/http/protocol/HttpContext;)": - "INTERNET", + "INTERNET", "Lorg/apache/http/impl/client/HttpClient;-execute-(Lorg/apache/http/client/methods/HttpUriRequest; Lorg/apache/http/protocol/HttpContext;)": - "INTERNET", + "INTERNET", "Lorg/apache/http/impl/client/HttpClient;-execute-(Lorg/apache/http/client/methods/HttpUriRequest; Lorg/apache/http/client/ResponseHandler;)": - "INTERNET", + "INTERNET", "Lorg/apache/http/impl/client/HttpClient;-execute-(Lorg/apache/http/HttpHost; Lorg/apache/http/client/methods/HttpUriRequest; Lorg/apache/http/client/ResponseHandler;)": - "INTERNET", + "INTERNET", "Lorg/apache/http/impl/client/HttpClient;-execute-(Lorg/apache/http/HttpHost; Lorg/apache/http/client/methods/HttpUriRequest;)": - "INTERNET", + "INTERNET", "Lorg/apache/http/impl/client/HttpClient;-execute-(Lorg/apache/http/HttpHost; Lorg/apache/http/client/methods/HttpUriRequest; Lorg/apache/http/protocol/HttpContext;)": - "INTERNET", + "INTERNET", "Lcom/android/http/multipart/Part;-send-(Ljava/io/OutputStream;)": "INTERNET", "Lcom/android/http/multipart/Part;-sendParts-(Ljava/io/OutputStream; [Lcom/android/http/multipart/Part;)": - "INTERNET", + "INTERNET", "Lcom/android/http/multipart/Part;-sendParts-(Ljava/io/OutputStream; [Lcom/android/http/multipart/Part; [B)": - "INTERNET", + "INTERNET", "Lcom/android/http/multipart/Part;-sendStart-(Ljava/io/OutputStream;)": "INTERNET", "Lcom/android/http/multipart/Part;-sendTransferEncodingHeader-(Ljava/io/OutputStream;)": - "INTERNET", + "INTERNET", "Landroid/drm/DrmErrorEvent;-TYPE_NO_INTERNET_CONNECTION-I": "INTERNET", "Landroid/webkit/WebViewCore;--(Landroid/content/Context; Landroid/webkit/WebView; Landroid/webkit/CallbackProxy; Ljava/util/Map;)": - "INTERNET", + "INTERNET", "Ljava/net/URLConnection;-connect-()": "INTERNET", "Ljava/net/URLConnection;-getInputStream-()": "INTERNET", "Landroid/app/Activity;-setContentView-(I)": "INTERNET", @@ -4558,7 +4558,7 @@ DVM_PERMISSIONS_BY_ELEMENT = { "Ljava/net/MulticastSocket;--(I)": "INTERNET", "Ljava/net/MulticastSocket;--(Ljava/net/SocketAddress;)": "INTERNET", "Lcom/android/http/multipart/StringPart;-sendData-(Ljava/io/OuputStream;)": - "INTERNET", + "INTERNET", "Ljava/net/URL;-getContent-([Ljava/lang/Class;)": "INTERNET", "Ljava/net/URL;-getContent-()": "INTERNET", "Ljava/net/URL;-openConnection-(Ljava/net/Proxy;)": "INTERNET", @@ -4577,112 +4577,112 @@ DVM_PERMISSIONS_BY_ELEMENT = { "Ljava/net/Socket;--()": "INTERNET", "Ljava/net/Socket;--(Ljava/lang/String; I)": "INTERNET", "Ljava/net/Socket;--(Ljava/lang/String; I Ljava/net/InetAddress; I)": - "INTERNET", + "INTERNET", "Ljava/net/Socket;--(Ljava/lang/String; I B)": "INTERNET", "Ljava/net/Socket;--(Ljava/net/InetAddress; I)": "INTERNET", "Ljava/net/Socket;--(Ljava/net/InetAddress; I Ljava/net/InetAddress; I)": - "INTERNET", + "INTERNET", "Ljava/net/Socket;--(Ljava/net/InetAddress; I B)": "INTERNET", "Landroid/webkit/WebView;--(Landroid/content/Context; Landroid/util/AttributeSet; I)": - "INTERNET", + "INTERNET", "Landroid/webkit/WebView;--(Landroid/content/Context; Landroid/util/AttributeSet;)": - "INTERNET", + "INTERNET", "Landroid/webkit/WebView;--(Landroid/content/Context;)": "INTERNET", "Ljava/net/NetworkInterface;--()": "INTERNET", "Ljava/net/NetworkInterface;--(Ljava/lang/String; I Ljava/net/InetAddress;)": - "INTERNET", + "INTERNET", "Landroid/webkit/WebChromeClient;-onGeolocationPermissionsShowPrompt-(Ljava/lang/String; Landroid/webkit/GeolocationPermissions/Callback;)": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/location/LocationManager;-GPS_PROVIDER-Ljava/lang/String;": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/location/LocationManager;-NETWORK_PROVIDER-Ljava/lang/String;": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/location/LocationManager;-PASSIVE_PROVIDER-Ljava/lang/String;": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/location/LocationManager;-addGpsStatusListener-(Landroid/location/GpsStatus/Listener;)": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/location/LocationManager;-addNmeaListener-(Landroid/location/GpsStatus/NmeaListener;)": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/location/LocationManager;-_requestLocationUpdates-(Ljava/lang/String; J F Landroid/app/PendingIntent;)": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/location/LocationManager;-_requestLocationUpdates-(Ljava/lang/String; J F Landroid/location/LocationListener; Landroid/os/Looper;)": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/location/LocationManager;-addGpsStatusListener-(Landroid/location/GpsStatus$Listener;)": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/location/LocationManager;-addNmeaListener-(Landroid/location/GpsStatus$NmeaListener;)": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/location/LocationManager;-addProximityAlert-(D D F J Landroid/app/PendingIntent;)": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/location/LocationManager;-best-(Ljava/util/List;)": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/location/LocationManager;-getBestProvider-(Landroid/location/Criteria; B)": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/location/LocationManager;-getLastKnownLocation-(Ljava/lang/String;)": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/location/LocationManager;-getProvider-(Ljava/lang/String;)": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/location/LocationManager;-getProviders-(Landroid/location/Criteria; B)": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/location/LocationManager;-getProviders-(B)": "ACCESS_FINE_LOCATION", "Landroid/location/LocationManager;-isProviderEnabled-(Ljava/lang/String;)": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/location/LocationManager;-requestLocationUpdates-(Ljava/lang/String; J F Landroid/app/PendingIntent;)": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/location/LocationManager;-requestLocationUpdates-(Ljava/lang/String; J F Landroid/location/LocationListener; Landroid/os/Looper;)": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/location/LocationManager;-requestLocationUpdates-(Ljava/lang/String; J F Landroid/location/LocationListener;)": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/location/LocationManager;-sendExtraCommand-(Ljava/lang/String; Ljava/lang/String; Landroid/os/Bundle;)": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/webkit/GeolocationService;-registerForLocationUpdates-()": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/webkit/GeolocationService;-setEnableGps-(B)": "ACCESS_FINE_LOCATION", "Landroid/webkit/GeolocationService;-start-()": "ACCESS_FINE_LOCATION", "Landroid/telephony/TelephonyManager;-getCellLocation-()": "ACCESS_FINE_LOCATION", "Landroid/telephony/TelephonyManager;-getCellLocation-()": "ACCESS_FINE_LOCATION", "Landroid/telephony/TelephonyManager;-getNeighboringCellInfo-()": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/location/ILocationManager$Stub$Proxy;-addGpsStatusListener-(Landroid/location/IGpsStatusListener;)": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/location/ILocationManager$Stub$Proxy;-addProximityAlert-(D D F J Landroid/app/PendingIntent;)": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/location/ILocationManager$Stub$Proxy;-getLastKnownLocation-(Ljava/lang/String;)": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/location/ILocationManager$Stub$Proxy;-getProviderInfo-(Ljava/lang/String;)": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/location/ILocationManager$Stub$Proxy;-getProviders-(B)": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/location/ILocationManager$Stub$Proxy;-isProviderEnabled-(Ljava/lang/String;)": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/location/ILocationManager$Stub$Proxy;-requestLocationUpdates-(Ljava/lang/String; J F Landroid/location/ILocationListener;)": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/location/ILocationManager$Stub$Proxy;-requestLocationUpdatesPI-(Ljava/lang/String; J F Landroid/app/PendingIntent;)": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/location/ILocationManager$Stub$Proxy;-sendExtraCommand-(Ljava/lang/String; Ljava/lang/String; Landroid/os/Bundle;)": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Lcom/android/internal/telephony/ITelephony$Stub$Proxy;-getCellLocation-()": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Lcom/android/internal/telephony/ITelephony$Stub$Proxy;-getNeighboringCellInfo-()": - "ACCESS_FINE_LOCATION", + "ACCESS_FINE_LOCATION", "Landroid/webkit/GeolocationPermissions$Callback;-invok-()": "ACCESS_FINE_LOCATION", "Landroid/provider/Telephony$Sms$Inbox;-addMessage-(Landroid/content/ContentResolver; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/Long; B)": - "READ_SMS", + "READ_SMS", "Landroid/provider/Telephony$Threads;-getOrCreateThreadId-(Landroid/content/Context; Ljava/lang/String;)": - "READ_SMS", + "READ_SMS", "Landroid/provider/Telephony$Threads;-getOrCreateThreadId-(Landroid/content/Context; Ljava/util/Set;)": - "READ_SMS", + "READ_SMS", "Landroid/provider/Telephony$Mms;-query-(Landroid/content/ContentResolver; [L[Ljava/lang/Strin; Ljava/lang/String; Ljava/lang/String;)": - "READ_SMS", + "READ_SMS", "Landroid/provider/Telephony$Mms;-query-(Landroid/content/ContentResolver; [L[Ljava/lang/Strin;)": - "READ_SMS", + "READ_SMS", "Landroid/provider/Telephony$Sms$Draft;-addMessage-(Landroid/content/ContentResolver; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/Long;)": - "READ_SMS", + "READ_SMS", "Landroid/provider/Telephony$Sms$Sent;-addMessage-(Landroid/content/ContentResolver; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/Long;)": - "READ_SMS", + "READ_SMS", "Landroid/provider/Telephony$Sms;-query-(Landroid/content/ContentResolver; [L[Ljava/lang/Strin; Ljava/lang/String; Ljava/lang/String;)": - "READ_SMS", + "READ_SMS", "Landroid/provider/Telephony$Sms;-query-(Landroid/content/ContentResolver; [L[Ljava/lang/Strin;)": - "READ_SMS", + "READ_SMS", "Landroid/view/SurfaceSession;--()": "ACCESS_SURFACE_FLINGER", "Landroid/view/Surface;-closeTransaction-()": "ACCESS_SURFACE_FLINGER", "Landroid/view/Surface;-freezeDisplay-(I)": "ACCESS_SURFACE_FLINGER", @@ -4695,31 +4695,31 @@ DVM_PERMISSIONS_BY_ELEMENT = { "Landroid/app/ActivityManager;-moveTaskToFront-(I I)": "REORDER_TASKS", "Landroid/net/sip/SipAudioCall;-setSpeakerMode-(B)": "MODIFY_AUDIO_SETTINGS", "Landroid/server/BluetoothA2dpService;-checkSinkSuspendState-(I)": - "MODIFY_AUDIO_SETTINGS", + "MODIFY_AUDIO_SETTINGS", "Landroid/server/BluetoothA2dpService;-handleSinkStateChange-(Landroid/bluetooth/BluetoothDevice;)": - "MODIFY_AUDIO_SETTINGS", + "MODIFY_AUDIO_SETTINGS", "Landroid/server/BluetoothA2dpService;-onBluetoothDisable-()": - "MODIFY_AUDIO_SETTINGS", + "MODIFY_AUDIO_SETTINGS", "Landroid/server/BluetoothA2dpService;-onBluetoothEnable-()": - "MODIFY_AUDIO_SETTINGS", + "MODIFY_AUDIO_SETTINGS", "Landroid/media/IAudioService$Stub$Proxy;-setBluetoothScoOn-(B)": - "MODIFY_AUDIO_SETTINGS", + "MODIFY_AUDIO_SETTINGS", "Landroid/media/IAudioService$Stub$Proxy;-setMode-(I Landroid/os/IBinder;)": - "MODIFY_AUDIO_SETTINGS", + "MODIFY_AUDIO_SETTINGS", "Landroid/media/IAudioService$Stub$Proxy;-setSpeakerphoneOn-(B)": - "MODIFY_AUDIO_SETTINGS", + "MODIFY_AUDIO_SETTINGS", "Landroid/media/IAudioService$Stub$Proxy;-startBluetoothSco-(Landroid/os/IBinder;)": - "MODIFY_AUDIO_SETTINGS", + "MODIFY_AUDIO_SETTINGS", "Landroid/media/IAudioService$Stub$Proxy;-stopBluetoothSco-(Landroid/os/IBinder;)": - "MODIFY_AUDIO_SETTINGS", + "MODIFY_AUDIO_SETTINGS", "Landroid/media/AudioService;-setBluetoothScoOn-(B)": "MODIFY_AUDIO_SETTINGS", "Landroid/media/AudioService;-setMode-(I Landroid/os/IBinder;)": - "MODIFY_AUDIO_SETTINGS", + "MODIFY_AUDIO_SETTINGS", "Landroid/media/AudioService;-setSpeakerphoneOn-(B)": "MODIFY_AUDIO_SETTINGS", "Landroid/media/AudioService;-startBluetoothSco-(Landroid/os/IBinder;)": - "MODIFY_AUDIO_SETTINGS", + "MODIFY_AUDIO_SETTINGS", "Landroid/media/AudioService;-stopBluetoothSco-(Landroid/os/IBinder;)": - "MODIFY_AUDIO_SETTINGS", + "MODIFY_AUDIO_SETTINGS", "Landroid/media/AudioManager;-startBluetoothSco-()": "MODIFY_AUDIO_SETTINGS", "Landroid/media/AudioManager;-stopBluetoothSco-()": "MODIFY_AUDIO_SETTINGS", "Landroid/media/AudioManager;-isBluetoothA2dpOn-()": "MODIFY_AUDIO_SETTINGS", @@ -4728,46 +4728,46 @@ DVM_PERMISSIONS_BY_ELEMENT = { "Landroid/media/AudioManager;-setMicrophoneMute-(B)": "MODIFY_AUDIO_SETTINGS", "Landroid/media/AudioManager;-setMode-(I)": "MODIFY_AUDIO_SETTINGS", "Landroid/media/AudioManager;-setParameter-(Ljava/lang/String; Ljava/lang/String;)": - "MODIFY_AUDIO_SETTINGS", + "MODIFY_AUDIO_SETTINGS", "Landroid/media/AudioManager;-setParameters-(Ljava/lang/String;)": - "MODIFY_AUDIO_SETTINGS", + "MODIFY_AUDIO_SETTINGS", "Landroid/media/AudioManager;-setSpeakerphoneOn-(B)": "MODIFY_AUDIO_SETTINGS", "Landroid/media/AudioManager;-startBluetoothSco-()": "MODIFY_AUDIO_SETTINGS", "Landroid/media/AudioManager;-stopBluetoothSco-()": "MODIFY_AUDIO_SETTINGS", "Lcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;-getDeviceId-()": - "READ_PHONE_STATE", + "READ_PHONE_STATE", "Lcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;-getDeviceSvn-()": - "READ_PHONE_STATE", + "READ_PHONE_STATE", "Lcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;-getIccSerialNumber-()": - "READ_PHONE_STATE", + "READ_PHONE_STATE", "Lcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;-getLine1AlphaTag-()": - "READ_PHONE_STATE", + "READ_PHONE_STATE", "Lcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;-getLine1Number-()": - "READ_PHONE_STATE", + "READ_PHONE_STATE", "Lcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;-getSubscriberId-()": - "READ_PHONE_STATE", + "READ_PHONE_STATE", "Lcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;-getVoiceMailAlphaTag-()": - "READ_PHONE_STATE", + "READ_PHONE_STATE", "Lcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;-getVoiceMailNumber-()": - "READ_PHONE_STATE", + "READ_PHONE_STATE", "Landroid/telephony/PhoneStateListener;-LISTEN_CALL_FORWARDING_INDICATOR-I": - "READ_PHONE_STATE", + "READ_PHONE_STATE", "Landroid/telephony/PhoneStateListener;-LISTEN_CALL_STATE-I": "READ_PHONE_STATE", "Landroid/telephony/PhoneStateListener;-LISTEN_DATA_ACTIVITY-I": "READ_PHONE_STATE", "Landroid/telephony/PhoneStateListener;-LISTEN_MESSAGE_WAITING_INDICATOR-I": - "READ_PHONE_STATE", + "READ_PHONE_STATE", "Landroid/telephony/PhoneStateListener;-LISTEN_SIGNAL_STRENGTH-I": - "READ_PHONE_STATE", + "READ_PHONE_STATE", "Landroid/accounts/AccountManagerService$SimWatcher;-onReceive-(Landroid/content/Context; Landroid/content/Intent;)": - "READ_PHONE_STATE", + "READ_PHONE_STATE", "Lcom/android/internal/telephony/CallerInfo;-markAsVoiceMail-()": - "READ_PHONE_STATE", + "READ_PHONE_STATE", "Landroid/os/Build/VERSION_CODES;-DONUT-I": "READ_PHONE_STATE", "Landroid/telephony/TelephonyManager;-ACTION_PHONE_STATE_CHANGED-Ljava/lang/String;": - "READ_PHONE_STATE", + "READ_PHONE_STATE", "Landroid/telephony/TelephonyManager;-getDeviceId-()": "READ_PHONE_STATE", "Landroid/telephony/TelephonyManager;-getDeviceSoftwareVersion-()": - "READ_PHONE_STATE", + "READ_PHONE_STATE", "Landroid/telephony/TelephonyManager;-getLine1Number-()": "READ_PHONE_STATE", "Landroid/telephony/TelephonyManager;-getSimSerialNumber-()": "READ_PHONE_STATE", "Landroid/telephony/TelephonyManager;-getSubscriberId-()": "READ_PHONE_STATE", @@ -4775,7 +4775,7 @@ DVM_PERMISSIONS_BY_ELEMENT = { "Landroid/telephony/TelephonyManager;-getVoiceMailNumber-()": "READ_PHONE_STATE", "Landroid/telephony/TelephonyManager;-getDeviceId-()": "READ_PHONE_STATE", "Landroid/telephony/TelephonyManager;-getDeviceSoftwareVersion-()": - "READ_PHONE_STATE", + "READ_PHONE_STATE", "Landroid/telephony/TelephonyManager;-getLine1AlphaTag-()": "READ_PHONE_STATE", "Landroid/telephony/TelephonyManager;-getLine1Number-()": "READ_PHONE_STATE", "Landroid/telephony/TelephonyManager;-getSimSerialNumber-()": "READ_PHONE_STATE", @@ -4783,222 +4783,222 @@ DVM_PERMISSIONS_BY_ELEMENT = { "Landroid/telephony/TelephonyManager;-getVoiceMailAlphaTag-()": "READ_PHONE_STATE", "Landroid/telephony/TelephonyManager;-getVoiceMailNumber-()": "READ_PHONE_STATE", "Landroid/telephony/TelephonyManager;-listen-(Landroid/telephony/PhoneStateListener; I)": - "READ_PHONE_STATE", + "READ_PHONE_STATE", "Lcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;-listen-(Ljava/lang/String; Lcom/android/internal/telephony/IPhoneStateListener; I B)": - "READ_PHONE_STATE", + "READ_PHONE_STATE", "Landroid/telephony/PhoneNumberUtils;-isVoiceMailNumber-(Ljava/lang/String;)": - "READ_PHONE_STATE", + "READ_PHONE_STATE", "Lcom/android/internal/telephony/ITelephony$Stub$Proxy;-isSimPinEnabled-()": - "READ_PHONE_STATE", + "READ_PHONE_STATE", "Landroid/media/RingtoneManager;-setActualDefaultRingtoneUri-(Landroid/content/Context; I Landroid/net/Uri;)": - "WRITE_SETTINGS", + "WRITE_SETTINGS", "Landroid/os/IPowerManager$Stub$Proxy;-setStayOnSetting-(I)": "WRITE_SETTINGS", "Landroid/server/BluetoothService;-persistBluetoothOnSetting-(B)": "WRITE_SETTINGS", "Landroid/provider/Settings$Secure;-putFloat-(Landroid/content/ContentResolver; Ljava/lang/String; F)": - "WRITE_SETTINGS", + "WRITE_SETTINGS", "Landroid/provider/Settings$Secure;-putInt-(Landroid/content/ContentResolver; Ljava/lang/String; I)": - "WRITE_SETTINGS", + "WRITE_SETTINGS", "Landroid/provider/Settings$Secure;-putLong-(Landroid/content/ContentResolver; Ljava/lang/String; J)": - "WRITE_SETTINGS", + "WRITE_SETTINGS", "Landroid/provider/Settings$Secure;-putString-(Landroid/content/ContentResolver; Ljava/lang/String; Ljava/lang/String;)": - "WRITE_SETTINGS", + "WRITE_SETTINGS", "Landroid/provider/Settings$Secure;-setLocationProviderEnabled-(Landroid/content/ContentResolver; Ljava/lang/String; B)": - "WRITE_SETTINGS", + "WRITE_SETTINGS", "Landroid/provider/Settings$Bookmarks;-add-(Landroid/content/ContentResolver; Landroid/content/Intent; Ljava/lang/String; Ljava/lang/String; C I)": - "WRITE_SETTINGS", + "WRITE_SETTINGS", "Landroid/provider/Settings$Bookmarks;-getIntentForShortcut-(Landroid/content/ContentResolver; C)": - "WRITE_SETTINGS", + "WRITE_SETTINGS", "Landroid/os/IMountService$Stub$Proxy;-setAutoStartUm-()": "WRITE_SETTINGS", "Landroid/os/IMountService$Stub$Proxy;-setPlayNotificationSound-()": - "WRITE_SETTINGS", + "WRITE_SETTINGS", "Landroid/provider/Settings$System;-putConfiguration-(Landroid/content/ContentResolver; Landroid/content/res/Configuration;)": - "WRITE_SETTINGS", + "WRITE_SETTINGS", "Landroid/provider/Settings$System;-putFloat-(Landroid/content/ContentResolver; Ljava/lang/String; F)": - "WRITE_SETTINGS", + "WRITE_SETTINGS", "Landroid/provider/Settings$System;-putInt-(Landroid/content/ContentResolver; Ljava/lang/String; I)": - "WRITE_SETTINGS", + "WRITE_SETTINGS", "Landroid/provider/Settings$System;-putLong-(Landroid/content/ContentResolver; Ljava/lang/String; J)": - "WRITE_SETTINGS", + "WRITE_SETTINGS", "Landroid/provider/Settings$System;-putString-(Landroid/content/ContentResolver; Ljava/lang/String; Ljava/lang/String;)": - "WRITE_SETTINGS", + "WRITE_SETTINGS", "Landroid/provider/Settings$System;-setShowGTalkServiceStatus-(Landroid/content/ContentResolver; B)": - "WRITE_SETTINGS", + "WRITE_SETTINGS", "Landroid/service/wallpaper/WallpaperService;-SERVICE_INTERFACE-Ljava/lang/String;": - "BIND_WALLPAPER", + "BIND_WALLPAPER", "Lcom/android/server/WallpaperManagerService;-bindWallpaperComponentLocked-(Landroid/content/ComponentName;)": - "BIND_WALLPAPER", + "BIND_WALLPAPER", "Landroid/content/ContentService;-dump-(Ljava/io/FileDescriptor; Ljava/io/PrintWriter; [L[Ljava/lang/Strin;)": - "DUMP", + "DUMP", "Landroid/view/IWindowManager$Stub$Proxy;-isViewServerRunning-()": "DUMP", "Landroid/view/IWindowManager$Stub$Proxy;-startViewServer-(I)": "DUMP", "Landroid/view/IWindowManager$Stub$Proxy;-stopViewServer-()": "DUMP", "Landroid/os/Debug;-dumpService-(Ljava/lang/String; Ljava/io/FileDescriptor; [Ljava/lang/String;)": - "DUMP", + "DUMP", "Landroid/os/IBinder;-DUMP_TRANSACTION-I": "DUMP", "Lcom/android/server/WallpaperManagerService;-dump-(Ljava/io/FileDescriptor; Ljava/io/PrintWriter; [L[Ljava/lang/Stri;)": - "DUMP", + "DUMP", "Landroid/accounts/AccountManager;-blockingGetAuthToken-(Landroid/accounts/Account; Ljava/lang/String; B)": - "USE_CREDENTIALS", + "USE_CREDENTIALS", "Landroid/accounts/AccountManager;-getAuthToken-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle; Landroid/app/Activity; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)": - "USE_CREDENTIALS", + "USE_CREDENTIALS", "Landroid/accounts/AccountManager;-getAuthToken-(Landroid/accounts/Account; Ljava/lang/String; B Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)": - "USE_CREDENTIALS", + "USE_CREDENTIALS", "Landroid/accounts/AccountManager;-invalidateAuthToken-(Ljava/lang/String; Ljava/lang/String;)": - "USE_CREDENTIALS", + "USE_CREDENTIALS", "Landroid/accounts/AccountManager;-blockingGetAuthToken-(Landroid/accounts/Account; Ljava/lang/String; B)": - "USE_CREDENTIALS", + "USE_CREDENTIALS", "Landroid/accounts/AccountManager;-getAuthToken-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle; Landroid/app/Activity; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)": - "USE_CREDENTIALS", + "USE_CREDENTIALS", "Landroid/accounts/AccountManager;-getAuthToken-(Landroid/accounts/Account; Ljava/lang/String; B Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)": - "USE_CREDENTIALS", + "USE_CREDENTIALS", "Landroid/accounts/AccountManagerService;-getAuthToken-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Ljava/lang/String; B B Landroid/os/Bundle;)": - "USE_CREDENTIALS", + "USE_CREDENTIALS", "Landroid/accounts/IAccountManager$Stub$Proxy;-getAuthToken-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Ljava/lang/String; B B Landroid/os/Bundle;)": - "USE_CREDENTIALS", + "USE_CREDENTIALS", "Lcom/android/internal/app/IUsageStats$Stub$Proxy;-notePauseComponent-(LComponentName;)": - "UPDATE_DEVICE_STATS", + "UPDATE_DEVICE_STATS", "Lcom/android/internal/app/IUsageStats$Stub$Proxy;-noteResumeComponent-(LComponentName;)": - "UPDATE_DEVICE_STATS", + "UPDATE_DEVICE_STATS", "Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-noteFullWifiLockAcquired-(I)": - "UPDATE_DEVICE_STATS", + "UPDATE_DEVICE_STATS", "Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-noteFullWifiLockReleased-(I)": - "UPDATE_DEVICE_STATS", + "UPDATE_DEVICE_STATS", "Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-noteInputEvent-()": - "UPDATE_DEVICE_STATS", + "UPDATE_DEVICE_STATS", "Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-notePhoneDataConnectionState-(I B)": - "UPDATE_DEVICE_STATS", + "UPDATE_DEVICE_STATS", "Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-notePhoneOff-()": - "UPDATE_DEVICE_STATS", + "UPDATE_DEVICE_STATS", "Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-notePhoneOn-()": - "UPDATE_DEVICE_STATS", + "UPDATE_DEVICE_STATS", "Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-notePhoneSignalStrength-(LSignalStrength;)": - "UPDATE_DEVICE_STATS", + "UPDATE_DEVICE_STATS", "Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-notePhoneState-(I)": - "UPDATE_DEVICE_STATS", + "UPDATE_DEVICE_STATS", "Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-noteScanWifiLockAcquired-(I)": - "UPDATE_DEVICE_STATS", + "UPDATE_DEVICE_STATS", "Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-noteScanWifiLockReleased-(I)": - "UPDATE_DEVICE_STATS", + "UPDATE_DEVICE_STATS", "Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-noteScreenBrightness-(I)": - "UPDATE_DEVICE_STATS", + "UPDATE_DEVICE_STATS", "Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-noteScreenOff-()": - "UPDATE_DEVICE_STATS", + "UPDATE_DEVICE_STATS", "Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-noteScreenOn-()": - "UPDATE_DEVICE_STATS", + "UPDATE_DEVICE_STATS", "Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-noteStartGps-(I)": - "UPDATE_DEVICE_STATS", + "UPDATE_DEVICE_STATS", "Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-noteStartSensor-(I I)": - "UPDATE_DEVICE_STATS", + "UPDATE_DEVICE_STATS", "Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-noteStartWakelock-(I Ljava/lang/String; I)": - "UPDATE_DEVICE_STATS", + "UPDATE_DEVICE_STATS", "Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-noteStopGps-(I)": - "UPDATE_DEVICE_STATS", + "UPDATE_DEVICE_STATS", "Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-noteStopSensor-(I I)": - "UPDATE_DEVICE_STATS", + "UPDATE_DEVICE_STATS", "Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-noteStopWakelock-(I Ljava/lang/String; I)": - "UPDATE_DEVICE_STATS", + "UPDATE_DEVICE_STATS", "Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-noteUserActivity-(I I)": - "UPDATE_DEVICE_STATS", + "UPDATE_DEVICE_STATS", "Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-noteWifiMulticastDisabled-(I)": - "UPDATE_DEVICE_STATS", + "UPDATE_DEVICE_STATS", "Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-noteWifiMulticastEnabled-(I)": - "UPDATE_DEVICE_STATS", + "UPDATE_DEVICE_STATS", "Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-noteWifiOff-(I)": - "UPDATE_DEVICE_STATS", + "UPDATE_DEVICE_STATS", "Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-noteWifiOn-(I)": - "UPDATE_DEVICE_STATS", + "UPDATE_DEVICE_STATS", "Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-noteWifiRunning-()": - "UPDATE_DEVICE_STATS", + "UPDATE_DEVICE_STATS", "Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-noteWifiStopped-()": - "UPDATE_DEVICE_STATS", + "UPDATE_DEVICE_STATS", "Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-recordCurrentLevel-(I)": - "UPDATE_DEVICE_STATS", + "UPDATE_DEVICE_STATS", "Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-setOnBattery-(B I)": - "UPDATE_DEVICE_STATS", + "UPDATE_DEVICE_STATS", "Landroid/telephony/gsm/SmsManager;-getDefault-()": "SEND_SMS", "Landroid/telephony/gsm/SmsManager;-sendDataMessage-(Ljava/lang/String; Ljava/lang/String; S [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)": - "SEND_SMS", + "SEND_SMS", "Landroid/telephony/gsm/SmsManager;-sendTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)": - "SEND_SMS", + "SEND_SMS", "Landroid/telephony/gsm/SmsManager;-sendDataMessage-(Ljava/lang/String; Ljava/lang/String; S [L; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)": - "SEND_SMS", + "SEND_SMS", "Landroid/telephony/gsm/SmsManager;-sendMultipartTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/util/ArrayList; Ljava/util/ArrayList; Ljava/util/ArrayList;)": - "SEND_SMS", + "SEND_SMS", "Landroid/telephony/gsm/SmsManager;-sendTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)": - "SEND_SMS", + "SEND_SMS", "Landroid/telephony/SmsManager;-getDefault-()": "SEND_SMS", "Landroid/telephony/SmsManager;-sendDataMessage-(Ljava/lang/String; Ljava/lang/String; S [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)": - "SEND_SMS", + "SEND_SMS", "Landroid/telephony/SmsManager;-sendTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)": - "SEND_SMS", + "SEND_SMS", "Landroid/telephony/SmsManager;-sendDataMessage-(Ljava/lang/String; Ljava/lang/String; S [L; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)": - "SEND_SMS", + "SEND_SMS", "Landroid/telephony/SmsManager;-sendMultipartTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/util/ArrayList; Ljava/util/ArrayList; Ljava/util/ArrayList;)": - "SEND_SMS", + "SEND_SMS", "Landroid/telephony/SmsManager;-sendTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)": - "SEND_SMS", + "SEND_SMS", "Lcom/android/internal/telephony/ISms$Stub$Proxy;-sendData-(Ljava/lang/String; Ljava/lang/String; I [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)": - "SEND_SMS", + "SEND_SMS", "Lcom/android/internal/telephony/ISms$Stub$Proxy;-sendMultipartText-(Ljava/lang/String; Ljava/lang/String; Ljava/util/List; Ljava/util/List; Ljava/util/List;)": - "SEND_SMS", + "SEND_SMS", "Lcom/android/internal/telephony/ISms$Stub$Proxy;-sendText-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)": - "SEND_SMS", + "SEND_SMS", "Landroid/provider/UserDictionary$Words;-addWord-(Landroid/content/Context; Ljava/lang/String; I I)": - "WRITE_USER_DICTIONARY", + "WRITE_USER_DICTIONARY", "Landroid/telephony/TelephonyManager;-getCellLocation-()": "ACCESS_COARSE_LOCATION", "Landroid/telephony/PhoneStateListener;-LISTEN_CELL_LOCATION-I": - "ACCESS_COARSE_LOCATION", + "ACCESS_COARSE_LOCATION", "Landroid/location/LocationManager;-NETWORK_PROVIDER-Ljava/lang/String;": - "ACCESS_COARSE_LOCATION", + "ACCESS_COARSE_LOCATION", "Landroid/os/storage/IMountService$Stub$Proxy;-renameSecureContainer-(Ljava/lang/String; Ljava/lang/String;)": - "ASEC_RENAME", + "ASEC_RENAME", "Landroid/view/IWindowSession$Stub$Proxy;-add-(Landroid/view/IWindow; Landroid/view/WindowManager$LayoutParams; I Landroid/graphics/Rect;)": - "SYSTEM_ALERT_WINDOW", + "SYSTEM_ALERT_WINDOW", "Landroid/net/wifi/IWifiManager$Stub$Proxy;-acquireMulticastLock-(Landroid/os/IBinder; Ljava/lang/String;)": - "CHANGE_WIFI_MULTICAST_STATE", + "CHANGE_WIFI_MULTICAST_STATE", "Landroid/net/wifi/IWifiManager$Stub$Proxy;-initializeMulticastFiltering-()": - "CHANGE_WIFI_MULTICAST_STATE", + "CHANGE_WIFI_MULTICAST_STATE", "Landroid/net/wifi/IWifiManager$Stub$Proxy;-releaseMulticastLock-()": - "CHANGE_WIFI_MULTICAST_STATE", + "CHANGE_WIFI_MULTICAST_STATE", "Landroid/net/wifi/WifiManager$MulticastLock;-acquire-()": - "CHANGE_WIFI_MULTICAST_STATE", + "CHANGE_WIFI_MULTICAST_STATE", "Landroid/net/wifi/WifiManager$MulticastLock;-finalize-()": - "CHANGE_WIFI_MULTICAST_STATE", + "CHANGE_WIFI_MULTICAST_STATE", "Landroid/net/wifi/WifiManager$MulticastLock;-release-()": - "CHANGE_WIFI_MULTICAST_STATE", + "CHANGE_WIFI_MULTICAST_STATE", "Landroid/net/wifi/WifiManager;-initializeMulticastFiltering-()": - "CHANGE_WIFI_MULTICAST_STATE", + "CHANGE_WIFI_MULTICAST_STATE", "Landroid/content/Intent;-ACTION_BOOT_COMPLETED-Ljava/lang/String;": - "RECEIVE_BOOT_COMPLETED", + "RECEIVE_BOOT_COMPLETED", "Landroid/provider/AlarmClock;-ACTION_SET_ALARM-Ljava/lang/String;": "SET_ALARM", "Landroid/provider/AlarmClock;-EXTRA_HOUR-Ljava/lang/String;": "SET_ALARM", "Landroid/provider/AlarmClock;-EXTRA_MESSAGE-Ljava/lang/String;": "SET_ALARM", "Landroid/provider/AlarmClock;-EXTRA_MINUTES-Ljava/lang/String;": "SET_ALARM", "Landroid/provider/AlarmClock;-EXTRA_SKIP_UI-Ljava/lang/String;": "SET_ALARM", "Lcom/android/internal/telephony/IccPhoneBookInterfaceManager$Stub$Proxy;-updateAdnRecordsInEfByIndex-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)": - "WRITE_CONTACTS", + "WRITE_CONTACTS", "Lcom/android/internal/telephony/IccPhoneBookInterfaceManager$Stub$Proxy;-updateAdnRecordsInEfBySearch-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)": - "WRITE_CONTACTS", + "WRITE_CONTACTS", "Landroid/provider/Contacts$People;-addToGroup-(Landroid/content/ContentResolver; J J)": - "WRITE_CONTACTS", + "WRITE_CONTACTS", "Landroid/provider/ContactsContract$Contacts;-markAsContacted-(Landroid/content/ContentResolver; J)": - "WRITE_CONTACTS", + "WRITE_CONTACTS", "Landroid/provider/Contacts$Settings;-setSetting-(Landroid/content/ContentResolver; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)": - "WRITE_CONTACTS", + "WRITE_CONTACTS", "Lcom/android/internal/telephony/IIccPhoneBook$Stub$Proxy;-updateAdnRecordsInEfByIndex-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)": - "WRITE_CONTACTS", + "WRITE_CONTACTS", "Lcom/android/internal/telephony/IIccPhoneBook$Stub$Proxy;-updateAdnRecordsInEfBySearch-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)": - "WRITE_CONTACTS", + "WRITE_CONTACTS", "Landroid/provider/CallLog$Calls;-removeExpiredEntries-(Landroid/content/Context;)": - "WRITE_CONTACTS", + "WRITE_CONTACTS", "Landroid/pim/vcard/VCardEntryCommitter;-onEntryCreated-(Landroid/pim/vcard/VCardEntry;)": - "WRITE_CONTACTS", + "WRITE_CONTACTS", "Landroid/pim/vcard/VCardEntryHandler;-onEntryCreated-(Landroid/pim/vcard/VCardEntry;)": - "WRITE_CONTACTS", + "WRITE_CONTACTS", "Landroid/pim/vcard/VCardEntry;-pushIntoContentResolver-(Landroid/content/ContentResolver;)": - "WRITE_CONTACTS", + "WRITE_CONTACTS", "Landroid/content/Intent;-ACTION_NEW_OUTGOING_CALL-Ljava/lang/String;": - "PROCESS_OUTGOING_CALLS", + "PROCESS_OUTGOING_CALLS", "Landroid/app/StatusBarManager;-collapse-()": "EXPAND_STATUS_BAR", "Landroid/app/StatusBarManager;-expand-()": "EXPAND_STATUS_BAR", "Landroid/app/StatusBarManager;-toggle-()": "EXPAND_STATUS_BAR", @@ -5006,172 +5006,172 @@ DVM_PERMISSIONS_BY_ELEMENT = { "Landroid/app/IStatusBar$Stub$Proxy;-deactivate-()": "EXPAND_STATUS_BAR", "Landroid/app/IStatusBar$Stub$Proxy;-toggle-()": "EXPAND_STATUS_BAR", "Lcom/android/internal/telephony/ITelephony$Stub$Proxy;-answerRingingCall-()": - "MODIFY_PHONE_STATE", + "MODIFY_PHONE_STATE", "Lcom/android/internal/telephony/ITelephony$Stub$Proxy;-cancelMissedCallsNotification-()": - "MODIFY_PHONE_STATE", + "MODIFY_PHONE_STATE", "Lcom/android/internal/telephony/ITelephony$Stub$Proxy;-disableApnType-(Ljava/lang/String;)": - "MODIFY_PHONE_STATE", + "MODIFY_PHONE_STATE", "Lcom/android/internal/telephony/ITelephony$Stub$Proxy;-disableDataConnectivity-()": - "MODIFY_PHONE_STATE", + "MODIFY_PHONE_STATE", "Lcom/android/internal/telephony/ITelephony$Stub$Proxy;-enableApnType-(Ljava/lang/String;)": - "MODIFY_PHONE_STATE", + "MODIFY_PHONE_STATE", "Lcom/android/internal/telephony/ITelephony$Stub$Proxy;-enableDataConnectivity-()": - "MODIFY_PHONE_STATE", + "MODIFY_PHONE_STATE", "Lcom/android/internal/telephony/ITelephony$Stub$Proxy;-handlePinMmi-(Ljava/lang/String;)": - "MODIFY_PHONE_STATE", + "MODIFY_PHONE_STATE", "Lcom/android/internal/telephony/ITelephony$Stub$Proxy;-setRadio-(B)": - "MODIFY_PHONE_STATE", + "MODIFY_PHONE_STATE", "Lcom/android/internal/telephony/ITelephony$Stub$Proxy;-silenceRinger-()": - "MODIFY_PHONE_STATE", + "MODIFY_PHONE_STATE", "Lcom/android/internal/telephony/ITelephony$Stub$Proxy;-supplyPin-(Ljava/lang/String;)": - "MODIFY_PHONE_STATE", + "MODIFY_PHONE_STATE", "Lcom/android/internal/telephony/ITelephony$Stub$Proxy;-toggleRadioOnOff-()": - "MODIFY_PHONE_STATE", + "MODIFY_PHONE_STATE", "Landroid/net/MobileDataStateTracker;-reconnect-()": "MODIFY_PHONE_STATE", "Landroid/net/MobileDataStateTracker;-setRadio-(B)": "MODIFY_PHONE_STATE", "Landroid/net/MobileDataStateTracker;-teardown-()": "MODIFY_PHONE_STATE", "Lcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;-notifyCallForwardingChanged-(B)": - "MODIFY_PHONE_STATE", + "MODIFY_PHONE_STATE", "Lcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;-notifyCallState-(I Ljava/lang/String;)": - "MODIFY_PHONE_STATE", + "MODIFY_PHONE_STATE", "Lcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;-notifyCellLocation-(Landroid/os/Bundle;)": - "MODIFY_PHONE_STATE", + "MODIFY_PHONE_STATE", "Lcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;-notifyDataActivity-(I)": - "MODIFY_PHONE_STATE", + "MODIFY_PHONE_STATE", "Lcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;-notifyDataConnection-(I B Ljava/lang/String; Ljava/lang/String; [Ljava/lang/String; Ljava/lang/String; I)": - "MODIFY_PHONE_STATE", + "MODIFY_PHONE_STATE", "Lcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;-notifyDataConnectionFailed-(Ljava/lang/String;)": - "MODIFY_PHONE_STATE", + "MODIFY_PHONE_STATE", "Lcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;-notifyMessageWaitingChanged-(B)": - "MODIFY_PHONE_STATE", + "MODIFY_PHONE_STATE", "Lcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;-notifyServiceState-(Landroid/telephony/ServiceState;)": - "MODIFY_PHONE_STATE", + "MODIFY_PHONE_STATE", "Lcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;-notifySignalStrength-(Landroid/telephony/SignalStrength;)": - "MODIFY_PHONE_STATE", + "MODIFY_PHONE_STATE", "Landroid/os/IMountService$Stub$Proxy;-formatMedi-()": "MOUNT_FORMAT_FILESYSTEMS", "Landroid/os/storage/IMountService$Stub$Proxy;-formatVolume-(Ljava/lang/String;)": - "MOUNT_FORMAT_FILESYSTEMS", + "MOUNT_FORMAT_FILESYSTEMS", "Landroid/net/Downloads$DownloadBase;-startDownloadByUri-(Landroid/content/Context; Ljava/lang/String; Ljava/lang/String; B I B B Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)": - "ACCESS_DOWNLOAD_MANAGER", + "ACCESS_DOWNLOAD_MANAGER", "Landroid/net/Downloads$ByUri;-getCurrentOtaDownloads-(Landroid/content/Context; Ljava/lang/String;)": - "ACCESS_DOWNLOAD_MANAGER", + "ACCESS_DOWNLOAD_MANAGER", "Landroid/net/Downloads$ByUri;-getProgressCursor-(Landroid/content/Context; J)": - "ACCESS_DOWNLOAD_MANAGER", + "ACCESS_DOWNLOAD_MANAGER", "Landroid/net/Downloads$ByUri;-getStatus-(Landroid/content/Context; Ljava/lang/String; J)": - "ACCESS_DOWNLOAD_MANAGER", + "ACCESS_DOWNLOAD_MANAGER", "Landroid/net/Downloads$ByUri;-removeAllDownloadsByPackage-(Landroid/content/Context; Ljava/lang/String; Ljava/lang/String;)": - "ACCESS_DOWNLOAD_MANAGER", + "ACCESS_DOWNLOAD_MANAGER", "Landroid/net/Downloads$ByUri;-startDownloadByUri-(Landroid/content/Context; Ljava/lang/String; Ljava/lang/String; B I B B Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)": - "ACCESS_DOWNLOAD_MANAGER", + "ACCESS_DOWNLOAD_MANAGER", "Landroid/net/Downloads$ById;-deleteDownload-(Landroid/content/Context; J)": - "ACCESS_DOWNLOAD_MANAGER", + "ACCESS_DOWNLOAD_MANAGER", "Landroid/net/Downloads$ById;-getMimeTypeForId-(Landroid/content/Context; J)": - "ACCESS_DOWNLOAD_MANAGER", + "ACCESS_DOWNLOAD_MANAGER", "Landroid/net/Downloads$ById;-getStatus-(Landroid/content/Context; J)": - "ACCESS_DOWNLOAD_MANAGER", + "ACCESS_DOWNLOAD_MANAGER", "Landroid/net/Downloads$ById;-openDownload-(Landroid/content/Context; J Ljava/lang/String;)": - "ACCESS_DOWNLOAD_MANAGER", + "ACCESS_DOWNLOAD_MANAGER", "Landroid/net/Downloads$ById;-openDownloadStream-(Landroid/content/Context; J)": - "ACCESS_DOWNLOAD_MANAGER", + "ACCESS_DOWNLOAD_MANAGER", "Landroid/net/Downloads$ById;-startDownloadByUri-(Landroid/content/Context; Ljava/lang/String; Ljava/lang/String; B I B B Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)": - "ACCESS_DOWNLOAD_MANAGER", + "ACCESS_DOWNLOAD_MANAGER", "Landroid/view/IWindowManager$Stub$Proxy;-getDPadKeycodeState-(I)": - "READ_INPUT_STATE", + "READ_INPUT_STATE", "Landroid/view/IWindowManager$Stub$Proxy;-getDPadScancodeState-(I)": - "READ_INPUT_STATE", + "READ_INPUT_STATE", "Landroid/view/IWindowManager$Stub$Proxy;-getKeycodeState-(I)": "READ_INPUT_STATE", "Landroid/view/IWindowManager$Stub$Proxy;-getKeycodeStateForDevice-(I I)": - "READ_INPUT_STATE", + "READ_INPUT_STATE", "Landroid/view/IWindowManager$Stub$Proxy;-getScancodeState-(I)": "READ_INPUT_STATE", "Landroid/view/IWindowManager$Stub$Proxy;-getScancodeStateForDevice-(I I)": - "READ_INPUT_STATE", + "READ_INPUT_STATE", "Landroid/view/IWindowManager$Stub$Proxy;-getSwitchState-(I)": "READ_INPUT_STATE", "Landroid/view/IWindowManager$Stub$Proxy;-getSwitchStateForDevice-(I I)": - "READ_INPUT_STATE", + "READ_INPUT_STATE", "Landroid/view/IWindowManager$Stub$Proxy;-getTrackballKeycodeState-(I)": - "READ_INPUT_STATE", + "READ_INPUT_STATE", "Landroid/view/IWindowManager$Stub$Proxy;-getTrackballScancodeState-(I)": - "READ_INPUT_STATE", + "READ_INPUT_STATE", "Landroid/app/ContextImpl$ApplicationContentResolver;-getCurrentSync-()": - "READ_SYNC_STATS", + "READ_SYNC_STATS", "Landroid/app/ContextImpl$ApplicationContentResolver;-getSyncStatus-(Landroid/accounts/Account; Ljava/lang/String;)": - "READ_SYNC_STATS", + "READ_SYNC_STATS", "Landroid/app/ContextImpl$ApplicationContentResolver;-isSyncActive-(Landroid/accounts/Account; Ljava/lang/String;)": - "READ_SYNC_STATS", + "READ_SYNC_STATS", "Landroid/app/ContextImpl$ApplicationContentResolver;-isSyncPending-(Landroid/accounts/Account; Ljava/lang/String;)": - "READ_SYNC_STATS", + "READ_SYNC_STATS", "Landroid/content/ContentService;-getCurrentSync-()": "READ_SYNC_STATS", "Landroid/content/ContentService;-getSyncStatus-(Landroid/accounts/Account; Ljava/lang/String;)": - "READ_SYNC_STATS", + "READ_SYNC_STATS", "Landroid/content/ContentService;-isSyncActive-(Landroid/accounts/Account; Ljava/lang/String;)": - "READ_SYNC_STATS", + "READ_SYNC_STATS", "Landroid/content/ContentService;-isSyncPending-(Landroid/accounts/Account; Ljava/lang/String;)": - "READ_SYNC_STATS", + "READ_SYNC_STATS", "Landroid/content/ContentResolver;-getCurrentSync-()": "READ_SYNC_STATS", "Landroid/content/ContentResolver;-getSyncStatus-(Landroid/accounts/Account; Ljava/lang/String;)": - "READ_SYNC_STATS", + "READ_SYNC_STATS", "Landroid/content/ContentResolver;-isSyncActive-(Landroid/accounts/Account; Ljava/lang/String;)": - "READ_SYNC_STATS", + "READ_SYNC_STATS", "Landroid/content/ContentResolver;-isSyncPending-(Landroid/accounts/Account; Ljava/lang/String;)": - "READ_SYNC_STATS", + "READ_SYNC_STATS", "Landroid/content/IContentService$Stub$Proxy;-getCurrentSync-()": "READ_SYNC_STATS", "Landroid/content/IContentService$Stub$Proxy;-getSyncStatus-(Landroid/accounts/Account; Ljava/lang/String;)": - "READ_SYNC_STATS", + "READ_SYNC_STATS", "Landroid/content/IContentService$Stub$Proxy;-isSyncActive-(Landroid/accounts/Account; Ljava/lang/String;)": - "READ_SYNC_STATS", + "READ_SYNC_STATS", "Landroid/content/IContentService$Stub$Proxy;-isSyncPending-(Landroid/accounts/Account; Ljava/lang/String;)": - "READ_SYNC_STATS", + "READ_SYNC_STATS", "Landroid/app/AlarmManager;-setTime-(J)": "SET_TIME", "Landroid/app/AlarmManager;-setTimeZone-(Ljava/lang/String;)": "SET_TIME", "Landroid/app/AlarmManager;-setTime-(J)": "SET_TIME", "Landroid/app/IAlarmManager$Stub$Proxy;-setTime-(J)": "SET_TIME", "Lcom/htc/net/wimax/WimaxController$Stub$Proxy;-setWimaxEnable-()": - "CHANGE_WIMAX_STATE", + "CHANGE_WIMAX_STATE", "Landroid/os/IMountService$Stub$Proxy;-mountMedi-()": "MOUNT_UNMOUNT_FILESYSTEMS", "Landroid/os/IMountService$Stub$Proxy;-unmountMedi-()": "MOUNT_UNMOUNT_FILESYSTEMS", "Landroid/os/storage/IMountService$Stub$Proxy;-getStorageUsers-(Ljava/lang/String;)": - "MOUNT_UNMOUNT_FILESYSTEMS", + "MOUNT_UNMOUNT_FILESYSTEMS", "Landroid/os/storage/IMountService$Stub$Proxy;-mountVolume-(Ljava/lang/String;)": - "MOUNT_UNMOUNT_FILESYSTEMS", + "MOUNT_UNMOUNT_FILESYSTEMS", "Landroid/os/storage/IMountService$Stub$Proxy;-setUsbMassStorageEnabled-(B)": - "MOUNT_UNMOUNT_FILESYSTEMS", + "MOUNT_UNMOUNT_FILESYSTEMS", "Landroid/os/storage/IMountService$Stub$Proxy;-unmountVolume-(Ljava/lang/String; B)": - "MOUNT_UNMOUNT_FILESYSTEMS", + "MOUNT_UNMOUNT_FILESYSTEMS", "Landroid/os/storage/StorageManager;-disableUsbMassStorage-()": - "MOUNT_UNMOUNT_FILESYSTEMS", + "MOUNT_UNMOUNT_FILESYSTEMS", "Landroid/os/storage/StorageManager;-enableUsbMassStorage-()": - "MOUNT_UNMOUNT_FILESYSTEMS", + "MOUNT_UNMOUNT_FILESYSTEMS", "Landroid/app/ContextImpl$ApplicationPackageManager;-movePackage-(Ljava/lang/String; LIPackageMoveObserver; I)": - "MOVE_PACKAGE", + "MOVE_PACKAGE", "Landroid/app/ContextImpl$ApplicationPackageManager;-movePackage-(Ljava/lang/String; LIPackageMoveObserver; I)": - "MOVE_PACKAGE", + "MOVE_PACKAGE", "Landroid/content/pm/PackageManager;-movePackage-(Ljava/lang/String; LIPackageMoveObserver; I)": - "MOVE_PACKAGE", + "MOVE_PACKAGE", "Landroid/content/pm/IPackageManager$Stub$Proxy;-movePackage-(Ljava/lang/String; Landroid/content/pm/IPackageMoveObserver; I)": - "MOVE_PACKAGE", + "MOVE_PACKAGE", "Lcom/htc/net/wimax/WimaxController$Stub$Proxy;-getConnectionInf-()": - "ACCESS_WIMAX_STATE", + "ACCESS_WIMAX_STATE", "Lcom/htc/net/wimax/WimaxController$Stub$Proxy;-getWimaxStat-()": "ACCESS_WIMAX_STATE", "Lcom/htc/net/wimax/WimaxController$Stub$Proxy;-isBackoffStat-()": - "ACCESS_WIMAX_STATE", + "ACCESS_WIMAX_STATE", "Lcom/htc/net/wimax/WimaxController$Stub$Proxy;-isWimaxEnable-()": - "ACCESS_WIMAX_STATE", + "ACCESS_WIMAX_STATE", "Landroid/net/sip/SipAudioCall;-startAudio-()": "ACCESS_WIFI_STATE", "Landroid/net/wifi/IWifiManager$Stub$Proxy;-getConfiguredNetworks-()": - "ACCESS_WIFI_STATE", + "ACCESS_WIFI_STATE", "Landroid/net/wifi/IWifiManager$Stub$Proxy;-getConnectionInfo-()": "ACCESS_WIFI_STATE", "Landroid/net/wifi/IWifiManager$Stub$Proxy;-getDhcpInfo-()": "ACCESS_WIFI_STATE", "Landroid/net/wifi/IWifiManager$Stub$Proxy;-getNumAllowedChannels-()": - "ACCESS_WIFI_STATE", + "ACCESS_WIFI_STATE", "Landroid/net/wifi/IWifiManager$Stub$Proxy;-getScanResults-()": "ACCESS_WIFI_STATE", "Landroid/net/wifi/IWifiManager$Stub$Proxy;-getValidChannelCounts-()": - "ACCESS_WIFI_STATE", + "ACCESS_WIFI_STATE", "Landroid/net/wifi/IWifiManager$Stub$Proxy;-getWifiApEnabledState-()": - "ACCESS_WIFI_STATE", + "ACCESS_WIFI_STATE", "Landroid/net/wifi/IWifiManager$Stub$Proxy;-getWifiEnabledState-()": - "ACCESS_WIFI_STATE", + "ACCESS_WIFI_STATE", "Landroid/net/wifi/IWifiManager$Stub$Proxy;-isMulticastEnabled-()": - "ACCESS_WIFI_STATE", + "ACCESS_WIFI_STATE", "Landroid/net/wifi/WifiManager;-getConfiguredNetworks-()": "ACCESS_WIFI_STATE", "Landroid/net/wifi/WifiManager;-getConnectionInfo-()": "ACCESS_WIFI_STATE", "Landroid/net/wifi/WifiManager;-getDhcpInfo-()": "ACCESS_WIFI_STATE", @@ -5184,128 +5184,128 @@ DVM_PERMISSIONS_BY_ELEMENT = { "Landroid/net/wifi/WifiManager;-isWifiApEnabled-()": "ACCESS_WIFI_STATE", "Landroid/net/wifi/WifiManager;-isWifiEnabled-()": "ACCESS_WIFI_STATE", "Landroid/webkit/WebIconDatabase;-bulkRequestIconForPageUrl-(Landroid/content/ContentResolver; Ljava/lang/String; Landroid/webkit/WebIconDatabase$IconListener;)": - "READ_HISTORY_BOOKMARKS", + "READ_HISTORY_BOOKMARKS", "Landroid/provider/Browser;-BOOKMARKS_URI-Landroid/net/Uri;": "READ_HISTORY_BOOKMARKS", "Landroid/provider/Browser;-SEARCHES_URI-Landroid/net/Uri;": "READ_HISTORY_BOOKMARKS", "Landroid/provider/Browser;-addSearchUrl-(Landroid/content/ContentResolver; Ljava/lang/String;)": - "READ_HISTORY_BOOKMARKS", + "READ_HISTORY_BOOKMARKS", "Landroid/provider/Browser;-canClearHistory-(Landroid/content/ContentResolver;)": - "READ_HISTORY_BOOKMARKS", + "READ_HISTORY_BOOKMARKS", "Landroid/provider/Browser;-getAllBookmarks-(Landroid/content/ContentResolver;)": - "READ_HISTORY_BOOKMARKS", + "READ_HISTORY_BOOKMARKS", "Landroid/provider/Browser;-getAllVisitedUrls-(Landroid/content/ContentResolver;)": - "READ_HISTORY_BOOKMARKS", + "READ_HISTORY_BOOKMARKS", "Landroid/provider/Browser;-requestAllIcons-(Landroid/content/ContentResolver; Ljava/lang/String; Landroid/webkit/WebIconDatabase/IconListener;)": - "READ_HISTORY_BOOKMARKS", + "READ_HISTORY_BOOKMARKS", "Landroid/provider/Browser;-truncateHistory-(Landroid/content/ContentResolver;)": - "READ_HISTORY_BOOKMARKS", + "READ_HISTORY_BOOKMARKS", "Landroid/provider/Browser;-updateVisitedHistory-(Landroid/content/ContentResolver; Ljava/lang/String; B)": - "READ_HISTORY_BOOKMARKS", + "READ_HISTORY_BOOKMARKS", "Landroid/provider/Browser;-addSearchUrl-(Landroid/content/ContentResolver; Ljava/lang/String;)": - "READ_HISTORY_BOOKMARKS", + "READ_HISTORY_BOOKMARKS", "Landroid/provider/Browser;-canClearHistory-(Landroid/content/ContentResolver;)": - "READ_HISTORY_BOOKMARKS", + "READ_HISTORY_BOOKMARKS", "Landroid/provider/Browser;-clearHistory-(Landroid/content/ContentResolver;)": - "READ_HISTORY_BOOKMARKS", + "READ_HISTORY_BOOKMARKS", "Landroid/provider/Browser;-deleteFromHistory-(Landroid/content/ContentResolver; Ljava/lang/String;)": - "READ_HISTORY_BOOKMARKS", + "READ_HISTORY_BOOKMARKS", "Landroid/provider/Browser;-deleteHistoryTimeFrame-(Landroid/content/ContentResolver; J J)": - "READ_HISTORY_BOOKMARKS", + "READ_HISTORY_BOOKMARKS", "Landroid/provider/Browser;-deleteHistoryWhere-(Landroid/content/ContentResolver; Ljava/lang/String;)": - "READ_HISTORY_BOOKMARKS", + "READ_HISTORY_BOOKMARKS", "Landroid/provider/Browser;-getAllBookmarks-(Landroid/content/ContentResolver;)": - "READ_HISTORY_BOOKMARKS", + "READ_HISTORY_BOOKMARKS", "Landroid/provider/Browser;-getAllVisitedUrls-(Landroid/content/ContentResolver;)": - "READ_HISTORY_BOOKMARKS", + "READ_HISTORY_BOOKMARKS", "Landroid/provider/Browser;-getVisitedHistory-(Landroid/content/ContentResolver;)": - "READ_HISTORY_BOOKMARKS", + "READ_HISTORY_BOOKMARKS", "Landroid/provider/Browser;-getVisitedLike-(Landroid/content/ContentResolver; Ljava/lang/String;)": - "READ_HISTORY_BOOKMARKS", + "READ_HISTORY_BOOKMARKS", "Landroid/provider/Browser;-requestAllIcons-(Landroid/content/ContentResolver; Ljava/lang/String; Landroid/webkit/WebIconDatabase$IconListener;)": - "READ_HISTORY_BOOKMARKS", + "READ_HISTORY_BOOKMARKS", "Landroid/provider/Browser;-truncateHistory-(Landroid/content/ContentResolver;)": - "READ_HISTORY_BOOKMARKS", + "READ_HISTORY_BOOKMARKS", "Landroid/provider/Browser;-updateVisitedHistory-(Landroid/content/ContentResolver; Ljava/lang/String; B)": - "READ_HISTORY_BOOKMARKS", + "READ_HISTORY_BOOKMARKS", "Landroid/os/storage/IMountService$Stub$Proxy;-destroySecureContainer-(Ljava/lang/String; B)": - "ASEC_DESTROY", + "ASEC_DESTROY", "Landroid/net/ThrottleManager;-getByteCount-(Ljava/lang/String; I I I)": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/net/ThrottleManager;-getCliffLevel-(Ljava/lang/String; I)": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/net/ThrottleManager;-getCliffThreshold-(Ljava/lang/String; I)": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/net/ThrottleManager;-getHelpUri-()": "ACCESS_NETWORK_STATE", "Landroid/net/ThrottleManager;-getPeriodStartTime-(Ljava/lang/String;)": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/net/ThrottleManager;-getResetTime-(Ljava/lang/String;)": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/net/NetworkInfo;-isConnectedOrConnecting-()": "ACCESS_NETWORK_STATE", "Landroid/os/INetworkManagementService$Stub$Proxy;-getDnsForwarders-()": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/os/INetworkManagementService$Stub$Proxy;-getInterfaceRxCounter-(Ljava/lang/String;)": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/os/INetworkManagementService$Stub$Proxy;-getInterfaceRxThrottle-(Ljava/lang/String;)": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/os/INetworkManagementService$Stub$Proxy;-getInterfaceTxCounter-(Ljava/lang/String;)": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/os/INetworkManagementService$Stub$Proxy;-getInterfaceTxThrottle-(Ljava/lang/String;)": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/os/INetworkManagementService$Stub$Proxy;-getIpForwardingEnabled-()": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/os/INetworkManagementService$Stub$Proxy;-isTetheringStarted-()": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/os/INetworkManagementService$Stub$Proxy;-isUsbRNDISStarted-()": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/os/INetworkManagementService$Stub$Proxy;-listInterfaces-()": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/os/INetworkManagementService$Stub$Proxy;-listTetheredInterfaces-()": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/os/INetworkManagementService$Stub$Proxy;-listTtys-()": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/net/IConnectivityManager$Stub$Proxy;-getActiveNetworkInfo-()": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/net/IConnectivityManager$Stub$Proxy;-getAllNetworkInfo-()": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/net/IConnectivityManager$Stub$Proxy;-getLastTetherError-(Ljava/lang/String;)": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/net/IConnectivityManager$Stub$Proxy;-getMobileDataEnabled-()": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/net/IConnectivityManager$Stub$Proxy;-getNetworkInfo-(I)": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/net/IConnectivityManager$Stub$Proxy;-getNetworkPreference-()": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/net/IConnectivityManager$Stub$Proxy;-getTetherableIfaces-()": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/net/IConnectivityManager$Stub$Proxy;-getTetherableUsbRegexs-()": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/net/IConnectivityManager$Stub$Proxy;-getTetherableWifiRegexs-()": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/net/IConnectivityManager$Stub$Proxy;-getTetheredIfaces-()": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/net/IConnectivityManager$Stub$Proxy;-getTetheringErroredIfaces-()": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/net/IConnectivityManager$Stub$Proxy;-isTetheringSupported-()": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/net/IConnectivityManager$Stub$Proxy;-startUsingNetworkFeature-(I Ljava/lang/String; Landroid/os/IBinder;)": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/net/IThrottleManager$Stub$Proxy;-getByteCount-(Ljava/lang/String; I I I)": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/net/IThrottleManager$Stub$Proxy;-getCliffLevel-(Ljava/lang/String; I)": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/net/IThrottleManager$Stub$Proxy;-getCliffThreshold-(Ljava/lang/String; I)": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/net/IThrottleManager$Stub$Proxy;-getHelpUri-()": "ACCESS_NETWORK_STATE", "Landroid/net/IThrottleManager$Stub$Proxy;-getPeriodStartTime-(Ljava/lang/String;)": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/net/IThrottleManager$Stub$Proxy;-getResetTime-(Ljava/lang/String;)": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/net/IThrottleManager$Stub$Proxy;-getThrottle-(Ljava/lang/String;)": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/net/ConnectivityManager;-getActiveNetworkInfo-()": "ACCESS_NETWORK_STATE", "Landroid/net/ConnectivityManager;-getAllNetworkInfo-()": "ACCESS_NETWORK_STATE", "Landroid/net/ConnectivityManager;-getLastTetherError-(Ljava/lang/String;)": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/net/ConnectivityManager;-getMobileDataEnabled-()": "ACCESS_NETWORK_STATE", "Landroid/net/ConnectivityManager;-getNetworkInfo-(I)": "ACCESS_NETWORK_STATE", "Landroid/net/ConnectivityManager;-getNetworkPreference-()": "ACCESS_NETWORK_STATE", @@ -5314,14 +5314,14 @@ DVM_PERMISSIONS_BY_ELEMENT = { "Landroid/net/ConnectivityManager;-getTetherableWifiRegexs-()": "ACCESS_NETWORK_STATE", "Landroid/net/ConnectivityManager;-getTetheredIfaces-()": "ACCESS_NETWORK_STATE", "Landroid/net/ConnectivityManager;-getTetheringErroredIfaces-()": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/net/ConnectivityManager;-isTetheringSupported-()": "ACCESS_NETWORK_STATE", "Landroid/net/http/RequestQueue;-enablePlatformNotifications-()": - "ACCESS_NETWORK_STATE", + "ACCESS_NETWORK_STATE", "Landroid/net/http/RequestQueue;-setProxyConfig-()": "ACCESS_NETWORK_STATE", "Landroid/app/IActivityManager$Stub$Proxy;-getRecentTasks-(I I)": "GET_TASKS", "Landroid/app/IActivityManager$Stub$Proxy;-getTasks-(I I Landroid/app/IThumbnailReceiver;)": - "GET_TASKS", + "GET_TASKS", "Landroid/app/ActivityManagerNative;-getRecentTasks-(I I)": "GET_TASKS", "Landroid/app/ActivityManagerNative;-getRunningTasks-(I)": "GET_TASKS", "Landroid/app/ActivityManager;-getRecentTasks-(I I)": "GET_TASKS", @@ -5329,130 +5329,130 @@ DVM_PERMISSIONS_BY_ELEMENT = { "Landroid/app/ActivityManager;-getRecentTasks-(I I)": "GET_TASKS", "Landroid/app/ActivityManager;-getRunningTasks-(I)": "GET_TASKS", "Landroid/view/View/OnSystemUiVisibilityChangeListener;-onSystemUiVisibilityChange-(I)": - "STATUS_BAR", + "STATUS_BAR", "Landroid/view/View;-STATUS_BAR_HIDDEN-I": "STATUS_BAR", "Landroid/view/View;-STATUS_BAR_VISIBLE-I": "STATUS_BAR", "Landroid/app/StatusBarManager;-addIcon-(Ljava/lang/String; I I)": "STATUS_BAR", "Landroid/app/StatusBarManager;-disable-(I)": "STATUS_BAR", "Landroid/app/StatusBarManager;-removeIcon-(Landroid/os/IBinder;)": "STATUS_BAR", "Landroid/app/StatusBarManager;-updateIcon-(Landroid/os/IBinder; Ljava/lang/String; I I)": - "STATUS_BAR", + "STATUS_BAR", "Landroid/view/WindowManager/LayoutParams;-TYPE_STATUS_BAR-I": "STATUS_BAR", "Landroid/view/WindowManager/LayoutParams;-TYPE_STATUS_BAR_PANEL-I": "STATUS_BAR", "Landroid/view/WindowManager/LayoutParams;-systemUiVisibility-I": "STATUS_BAR", "Landroid/view/WindowManager/LayoutParams;-type-I": "STATUS_BAR", "Landroid/app/IStatusBar$Stub$Proxy;-addIcon-(Ljava/lang/String; Ljava/lang/String; I I)": - "STATUS_BAR", + "STATUS_BAR", "Landroid/app/IStatusBar$Stub$Proxy;-disable-(I Landroid/os/IBinder; Ljava/lang/String;)": - "STATUS_BAR", + "STATUS_BAR", "Landroid/app/IStatusBar$Stub$Proxy;-removeIcon-(Landroid/os/IBinder;)": "STATUS_BAR", "Landroid/app/IStatusBar$Stub$Proxy;-updateIcon-(Landroid/os/IBinder; Ljava/lang/String; Ljava/lang/String; I I)": - "STATUS_BAR", + "STATUS_BAR", "Landroid/app/IActivityManager$Stub$Proxy;-shutdown-(I)": "SHUTDOWN", "Landroid/os/IMountService$Stub$Proxy;-shutdow-()": "SHUTDOWN", "Landroid/os/storage/IMountService$Stub$Proxy;-shutdown-(Landroid/os/storage/IMountShutdownObserver;)": - "SHUTDOWN", + "SHUTDOWN", "Landroid/os/INetworkManagementService$Stub$Proxy;-shutdown-()": "SHUTDOWN", "Landroid/os/DropBoxManager;-ACTION_DROPBOX_ENTRY_ADDED-Ljava/lang/String;": - "READ_LOGS", + "READ_LOGS", "Landroid/os/DropBoxManager;-getNextEntry-(Ljava/lang/String; J)": "READ_LOGS", "Landroid/os/DropBoxManager;-getNextEntry-(Ljava/lang/String; J)": "READ_LOGS", "Lcom/android/internal/os/IDropBoxManagerService$Stub$Proxy;-getNextEntry-(Ljava/lang/String; J)": - "READ_LOGS", + "READ_LOGS", "Ljava/lang/Runtime;-exec-(Ljava/lang/String;)": "READ_LOGS", "Ljava/lang/Runtime;-exec-([Ljava/lang/String;)": "READ_LOGS", "Ljava/lang/Runtime;-exec-([Ljava/lang/String; [Ljava/lang/String;)": "READ_LOGS", "Ljava/lang/Runtime;-exec-([Ljava/lang/String; [Ljava/lang/String; Ljava/io/File;)": - "READ_LOGS", + "READ_LOGS", "Ljava/lang/Runtime;-exec-(Ljava/lang/String; [Ljava/lang/String;)": "READ_LOGS", "Ljava/lang/Runtime;-exec-(Ljava/lang/String; [Ljava/lang/String; Ljava/io/File;)": - "READ_LOGS", + "READ_LOGS", "Landroid/os/Process;-BLUETOOTH_GID-I": "BLUETOOTH", "Landroid/bluetooth/BluetoothA2dp;-ACTION_CONNECTION_STATE_CHANGED-Ljava/lang/String;": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothA2dp;-ACTION_PLAYING_STATE_CHANGED-Ljava/lang/String;": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothA2dp;-getConnectedDevices-()": "BLUETOOTH", "Landroid/bluetooth/BluetoothA2dp;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothA2dp;-getDevicesMatchingConnectionStates-([I)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothA2dp;-isA2dpPlaying-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothA2dp;-getConnectedSinks-()": "BLUETOOTH", "Landroid/bluetooth/BluetoothA2dp;-getNonDisconnectedSinks-()": "BLUETOOTH", "Landroid/bluetooth/BluetoothA2dp;-getSinkPriority-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothA2dp;-getSinkState-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothA2dp;-isSinkConnected-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/media/AudioManager;-ROUTE_BLUETOOTH-I": "BLUETOOTH", "Landroid/media/AudioManager;-ROUTE_BLUETOOTH_A2DP-I": "BLUETOOTH", "Landroid/media/AudioManager;-ROUTE_BLUETOOTH_SCO-I": "BLUETOOTH", "Landroid/bluetooth/IBluetoothA2dp$Stub$Proxy;-getConnectedSinks-()": "BLUETOOTH", "Landroid/bluetooth/IBluetoothA2dp$Stub$Proxy;-getNonDisconnectedSinks-()": "BLUETOOTH", "Landroid/bluetooth/IBluetoothA2dp$Stub$Proxy;-getSinkPriority-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/IBluetoothA2dp$Stub$Proxy;-getSinkState-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothSocket;-connect-()": "BLUETOOTH", "Landroid/bluetooth/BluetoothPbap;-getClient-()": "BLUETOOTH", "Landroid/bluetooth/BluetoothPbap;-getState-()": "BLUETOOTH", "Landroid/bluetooth/BluetoothPbap;-isConnected-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/provider/Settings/System;-AIRPLANE_MODE_RADIOS-Ljava/lang/String;": - "BLUETOOTH", + "BLUETOOTH", "Landroid/provider/Settings/System;-BLUETOOTH_DISCOVERABILITY-Ljava/lang/String;": - "BLUETOOTH", + "BLUETOOTH", "Landroid/provider/Settings/System;-BLUETOOTH_DISCOVERABILITY_TIMEOUT-Ljava/lang/String;": - "BLUETOOTH", + "BLUETOOTH", "Landroid/provider/Settings/System;-BLUETOOTH_ON-Ljava/lang/String;": "BLUETOOTH", "Landroid/provider/Settings/System;-RADIO_BLUETOOTH-Ljava/lang/String;": "BLUETOOTH", "Landroid/provider/Settings/System;-VOLUME_BLUETOOTH_SCO-Ljava/lang/String;": - "BLUETOOTH", + "BLUETOOTH", "Landroid/provider/Settings;-ACTION_BLUETOOTH_SETTINGS-Ljava/lang/String;": "BLUETOOTH", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-addRfcommServiceRecord-(Ljava/lang/String; Landroid/os/ParcelUuid; I Landroid/os/IBinder;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-fetchRemoteUuids-(Ljava/lang/String; Landroid/os/ParcelUuid; Landroid/bluetooth/IBluetoothCallback;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-getAddress-()": "BLUETOOTH", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-getBluetoothState-()": "BLUETOOTH", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-getBondState-(Ljava/lang/String;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-getDiscoverableTimeout-()": "BLUETOOTH", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-getName-()": "BLUETOOTH", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-getRemoteClass-(Ljava/lang/String;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-getRemoteName-(Ljava/lang/String;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-getRemoteServiceChannel-(Ljava/lang/String; Landroid/os/ParcelUuid;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-getRemoteUuids-(Ljava/lang/String;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-getScanMode-()": "BLUETOOTH", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-getTrustState-(Ljava/lang/String;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-isDiscovering-()": "BLUETOOTH", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-isEnabled-()": "BLUETOOTH", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-listBonds-()": "BLUETOOTH", "Landroid/bluetooth/IBluetooth$Stub$Proxy;-removeServiceRecord-(I)": "BLUETOOTH", "Landroid/bluetooth/BluetoothAdapter;-ACTION_CONNECTION_STATE_CHANGED-Ljava/lang/String;": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothAdapter;-ACTION_DISCOVERY_FINISHED-Ljava/lang/String;": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothAdapter;-ACTION_DISCOVERY_STARTED-Ljava/lang/String;": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothAdapter;-ACTION_LOCAL_NAME_CHANGED-Ljava/lang/String;": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothAdapter;-ACTION_REQUEST_DISCOVERABLE-Ljava/lang/String;": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothAdapter;-ACTION_REQUEST_ENABLE-Ljava/lang/String;": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothAdapter;-ACTION_SCAN_MODE_CHANGED-Ljava/lang/String;": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothAdapter;-ACTION_STATE_CHANGED-Ljava/lang/String;": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothAdapter;-cancelDiscovery-()": "BLUETOOTH", "Landroid/bluetooth/BluetoothAdapter;-disable-()": "BLUETOOTH", "Landroid/bluetooth/BluetoothAdapter;-enable-()": "BLUETOOTH", @@ -5464,9 +5464,9 @@ DVM_PERMISSIONS_BY_ELEMENT = { "Landroid/bluetooth/BluetoothAdapter;-isDiscovering-()": "BLUETOOTH", "Landroid/bluetooth/BluetoothAdapter;-isEnabled-()": "BLUETOOTH", "Landroid/bluetooth/BluetoothAdapter;-listenUsingInsecureRfcommWithServiceRecord-(Ljava/lang/String; Ljava/util/UUID;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothAdapter;-listenUsingRfcommWithServiceRecord-(Ljava/lang/String; Ljava/util/UUID;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothAdapter;-setName-(Ljava/lang/String;)": "BLUETOOTH", "Landroid/bluetooth/BluetoothAdapter;-startDiscovery-()": "BLUETOOTH", "Landroid/bluetooth/BluetoothAdapter;-getAddress-()": "BLUETOOTH", @@ -5478,120 +5478,120 @@ DVM_PERMISSIONS_BY_ELEMENT = { "Landroid/bluetooth/BluetoothAdapter;-isDiscovering-()": "BLUETOOTH", "Landroid/bluetooth/BluetoothAdapter;-isEnabled-()": "BLUETOOTH", "Landroid/bluetooth/BluetoothAdapter;-listenUsingRfcommWithServiceRecord-(Ljava/lang/String; Ljava/util/UUID;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothProfile;-getConnectedDevices-()": "BLUETOOTH", "Landroid/bluetooth/BluetoothProfile;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothProfile;-getDevicesMatchingConnectionStates-([I)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothHeadset;-ACTION_AUDIO_STATE_CHANGED-Ljava/lang/String;": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothHeadset;-ACTION_CONNECTION_STATE_CHANGED-Ljava/lang/String;": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothHeadset;-ACTION_VENDOR_SPECIFIC_HEADSET_EVENT-Ljava/lang/String;": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothHeadset;-getConnectedDevices-()": "BLUETOOTH", "Landroid/bluetooth/BluetoothHeadset;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothHeadset;-getDevicesMatchingConnectionStates-([I)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothHeadset;-isAudioConnected-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothHeadset;-startVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothHeadset;-stopVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothHeadset;-getBatteryUsageHint-()": "BLUETOOTH", "Landroid/bluetooth/BluetoothHeadset;-getCurrentHeadset-()": "BLUETOOTH", "Landroid/bluetooth/BluetoothHeadset;-getPriority-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothHeadset;-getState-()": "BLUETOOTH", "Landroid/bluetooth/BluetoothHeadset;-isConnected-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothHeadset;-startVoiceRecognition-()": "BLUETOOTH", "Landroid/bluetooth/BluetoothHeadset;-stopVoiceRecognition-()": "BLUETOOTH", "Landroid/bluetooth/IBluetoothHeadset$Stub$Proxy;-getBatteryUsageHint-()": "BLUETOOTH", "Landroid/bluetooth/IBluetoothHeadset$Stub$Proxy;-getCurrentHeadset-()": "BLUETOOTH", "Landroid/bluetooth/IBluetoothHeadset$Stub$Proxy;-getPriority-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/IBluetoothHeadset$Stub$Proxy;-getState-()": "BLUETOOTH", "Landroid/bluetooth/IBluetoothHeadset$Stub$Proxy;-isConnected-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/IBluetoothHeadset$Stub$Proxy;-startVoiceRecognition-()": "BLUETOOTH", "Landroid/bluetooth/IBluetoothHeadset$Stub$Proxy;-stopVoiceRecognition-()": "BLUETOOTH", "Landroid/bluetooth/BluetoothDevice;-ACTION_ACL_CONNECTED-Ljava/lang/String;": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothDevice;-ACTION_ACL_DISCONNECTED-Ljava/lang/String;": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothDevice;-ACTION_ACL_DISCONNECT_REQUESTED-Ljava/lang/String;": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothDevice;-ACTION_BOND_STATE_CHANGED-Ljava/lang/String;": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothDevice;-ACTION_CLASS_CHANGED-Ljava/lang/String;": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothDevice;-ACTION_FOUND-Ljava/lang/String;": "BLUETOOTH", "Landroid/bluetooth/BluetoothDevice;-ACTION_NAME_CHANGED-Ljava/lang/String;": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothDevice;-createInsecureRfcommSocketToServiceRecord-(Ljava/util/UUID;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothDevice;-createRfcommSocketToServiceRecord-(Ljava/util/UUID;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothDevice;-getBluetoothClass-()": "BLUETOOTH", "Landroid/bluetooth/BluetoothDevice;-getBondState-()": "BLUETOOTH", "Landroid/bluetooth/BluetoothDevice;-getName-()": "BLUETOOTH", "Landroid/bluetooth/BluetoothDevice;-createRfcommSocketToServiceRecord-(Ljava/util/UUID;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothDevice;-fetchUuidsWithSdp-()": "BLUETOOTH", "Landroid/bluetooth/BluetoothDevice;-getBondState-()": "BLUETOOTH", "Landroid/bluetooth/BluetoothDevice;-getName-()": "BLUETOOTH", "Landroid/bluetooth/BluetoothDevice;-getServiceChannel-(Landroid/os/ParcelUuid;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/bluetooth/BluetoothDevice;-getUuids-()": "BLUETOOTH", "Landroid/server/BluetoothA2dpService;--(Landroid/content/Context; Landroid/server/BluetoothService;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/server/BluetoothA2dpService;-addAudioSink-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/server/BluetoothA2dpService;-getConnectedSinks-()": "BLUETOOTH", "Landroid/server/BluetoothA2dpService;-getNonDisconnectedSinks-()": "BLUETOOTH", "Landroid/server/BluetoothA2dpService;-getSinkPriority-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/server/BluetoothA2dpService;-getSinkState-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/server/BluetoothA2dpService;-isSinkDevice-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/server/BluetoothA2dpService;-lookupSinksMatchingStates-([I)": "BLUETOOTH", "Landroid/server/BluetoothA2dpService;-onConnectSinkResult-(Ljava/lang/String; B)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/server/BluetoothA2dpService;-onSinkPropertyChanged-(Ljava/lang/String; [L[Ljava/lang/Strin;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/provider/Settings/Secure;-BLUETOOTH_ON-Ljava/lang/String;": "BLUETOOTH", "Landroid/bluetooth/IBluetoothPbap$Stub$Proxy;-getClient-()": "BLUETOOTH", "Landroid/bluetooth/IBluetoothPbap$Stub$Proxy;-getState-()": "BLUETOOTH", "Landroid/bluetooth/IBluetoothPbap$Stub$Proxy;-isConnected-(Landroid/bluetooth/BluetoothDevice;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/server/BluetoothService;-addRemoteDeviceProperties-(Ljava/lang/String; [L[Ljava/lang/Strin;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/server/BluetoothService;-addRfcommServiceRecord-(Ljava/lang/String; Landroid/os/ParcelUuid; I Landroid/os/IBinder;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/server/BluetoothService;-fetchRemoteUuids-(Ljava/lang/String; Landroid/os/ParcelUuid; Landroid/bluetooth/IBluetoothCallback;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/server/BluetoothService;-getAddress-()": "BLUETOOTH", "Landroid/server/BluetoothService;-getAddressFromObjectPath-(Ljava/lang/String;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/server/BluetoothService;-getAllProperties-()": "BLUETOOTH", "Landroid/server/BluetoothService;-getBluetoothState-()": "BLUETOOTH", "Landroid/server/BluetoothService;-getBondState-(Ljava/lang/String;)": "BLUETOOTH", "Landroid/server/BluetoothService;-getDiscoverableTimeout-()": "BLUETOOTH", "Landroid/server/BluetoothService;-getName-()": "BLUETOOTH", "Landroid/server/BluetoothService;-getObjectPathFromAddress-(Ljava/lang/String;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/server/BluetoothService;-getProperty-(Ljava/lang/String;)": "BLUETOOTH", "Landroid/server/BluetoothService;-getPropertyInternal-(Ljava/lang/String;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/server/BluetoothService;-getRemoteClass-(Ljava/lang/String;)": "BLUETOOTH", "Landroid/server/BluetoothService;-getRemoteName-(Ljava/lang/String;)": "BLUETOOTH", "Landroid/server/BluetoothService;-getRemoteServiceChannel-(Ljava/lang/String; Landroid/os/ParcelUuid;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/server/BluetoothService;-getRemoteUuids-(Ljava/lang/String;)": "BLUETOOTH", "Landroid/server/BluetoothService;-getScanMode-()": "BLUETOOTH", "Landroid/server/BluetoothService;-getTrustState-(Ljava/lang/String;)": "BLUETOOTH", @@ -5602,43 +5602,43 @@ DVM_PERMISSIONS_BY_ELEMENT = { "Landroid/server/BluetoothService;-sendUuidIntent-(Ljava/lang/String;)": "BLUETOOTH", "Landroid/server/BluetoothService;-setLinkTimeout-(Ljava/lang/String; I)": "BLUETOOTH", "Landroid/server/BluetoothService;-setPropertyBoolean-(Ljava/lang/String; B)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/server/BluetoothService;-setPropertyInteger-(Ljava/lang/String; I)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/server/BluetoothService;-setPropertyString-(Ljava/lang/String; Ljava/lang/String;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/server/BluetoothService;-updateDeviceServiceChannelCache-(Ljava/lang/String;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/server/BluetoothService;-updateRemoteDevicePropertiesCache-(Ljava/lang/String;)": - "BLUETOOTH", + "BLUETOOTH", "Landroid/content/pm/PackageManager;-FEATURE_BLUETOOTH-Ljava/lang/String;": "BLUETOOTH", "Landroid/bluetooth/BluetoothAssignedNumbers;-BLUETOOTH_SIG-I": "BLUETOOTH", "Landroid/app/ActivityManagerNative;-clearApplicationUserData-(Ljava/lang/String; Landroid/content/pm/IPackageDataObserver;)": - "CLEAR_APP_USER_DATA", + "CLEAR_APP_USER_DATA", "Landroid/app/ContextImpl$ApplicationPackageManager;-clearApplicationUserData-(Ljava/lang/String; LIPackageDataObserver;)": - "CLEAR_APP_USER_DATA", + "CLEAR_APP_USER_DATA", "Landroid/app/ContextImpl$ApplicationPackageManager;-clearApplicationUserData-(Ljava/lang/String; LIPackageDataObserver;)": - "CLEAR_APP_USER_DATA", + "CLEAR_APP_USER_DATA", "Landroid/app/ActivityManager;-clearApplicationUserData-(Ljava/lang/String; Landroid/content/pm/IPackageDataObserver;)": - "CLEAR_APP_USER_DATA", + "CLEAR_APP_USER_DATA", "Landroid/app/IActivityManager$Stub$Proxy;-clearApplicationUserData-(Ljava/lang/String; Landroid/content/pm/IPackageDataObserver;)": - "CLEAR_APP_USER_DATA", + "CLEAR_APP_USER_DATA", "Landroid/content/pm/PackageManager;-clearApplicationUserData-(Ljava/lang/String; LIPackageDataObserver;)": - "CLEAR_APP_USER_DATA", + "CLEAR_APP_USER_DATA", "Landroid/content/pm/IPackageManager$Stub$Proxy;-clearApplicationUserData-(Ljava/lang/String; Landroid/content/pm/IPackageDataObserver;)": - "CLEAR_APP_USER_DATA", + "CLEAR_APP_USER_DATA", "Landroid/provider/Telephony$Sms;-addMessageToUri-(Landroid/content/ContentResolver; Landroid/net/Uri; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/Long; B B J)": - "WRITE_SMS", + "WRITE_SMS", "Landroid/provider/Telephony$Sms;-addMessageToUri-(Landroid/content/ContentResolver; Landroid/net/Uri; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/Long; B B)": - "WRITE_SMS", + "WRITE_SMS", "Landroid/provider/Telephony$Sms;-moveMessageToFolder-(Landroid/content/Context; Landroid/net/Uri; I I)": - "WRITE_SMS", + "WRITE_SMS", "Landroid/provider/Telephony$Sms$Outbox;-addMessage-(Landroid/content/ContentResolver; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/Long; B J)": - "WRITE_SMS", + "WRITE_SMS", "Landroid/provider/Telephony$Sms$Draft;-saveMessage-(Landroid/content/ContentResolver; Landroid/net/Uri; Ljava/lang/String;)": - "WRITE_SMS", + "WRITE_SMS", "Landroid/app/IActivityManager$Stub$Proxy;-setProcessForeground-(Landroid/os/IBinder; I B)": - "SET_PROCESS_LIMIT", + "SET_PROCESS_LIMIT", "Landroid/app/IActivityManager$Stub$Proxy;-setProcessLimit-(I)": "SET_PROCESS_LIMIT", "Landroid/os/PowerManager;-goToSleep-(J)": "DEVICE_POWER", "Landroid/os/PowerManager;-setBacklightBrightness-(I)": "DEVICE_POWER", @@ -5649,264 +5649,264 @@ DVM_PERMISSIONS_BY_ELEMENT = { "Landroid/os/IPowerManager$Stub$Proxy;-setAttentionLight-(B I)": "DEVICE_POWER", "Landroid/os/IPowerManager$Stub$Proxy;-setBacklightBrightness-(I)": "DEVICE_POWER", "Landroid/os/IPowerManager$Stub$Proxy;-setPokeLock-(I Landroid/os/IBinder; Ljava/lang/String;)": - "DEVICE_POWER", + "DEVICE_POWER", "Landroid/os/IPowerManager$Stub$Proxy;-userActivityWithForce-(J B B)": "DEVICE_POWER", "Landroid/app/ExpandableListActivity;-setPersistent-(B)": "PERSISTENT_ACTIVITY", "Landroid/accounts/GrantCredentialsPermissionActivity;-setPersistent-(B)": - "PERSISTENT_ACTIVITY", + "PERSISTENT_ACTIVITY", "Landroid/app/Activity;-setPersistent-(B)": "PERSISTENT_ACTIVITY", "Landroid/app/ListActivity;-setPersistent-(B)": "PERSISTENT_ACTIVITY", "Landroid/app/AliasActivity;-setPersistent-(B)": "PERSISTENT_ACTIVITY", "Landroid/accounts/AccountAuthenticatorActivity;-setPersistent-(B)": - "PERSISTENT_ACTIVITY", + "PERSISTENT_ACTIVITY", "Landroid/app/IActivityManager$Stub$Proxy;-setPersistent-(Landroid/os/IBinder; B)": - "PERSISTENT_ACTIVITY", + "PERSISTENT_ACTIVITY", "Landroid/app/TabActivity;-setPersistent-(B)": "PERSISTENT_ACTIVITY", "Landroid/app/ActivityGroup;-setPersistent-(B)": "PERSISTENT_ACTIVITY", "Landroid/view/IWindowManager$Stub$Proxy;-addAppToken-(I Landroid/view/IApplicationToken; I I B)": - "MANAGE_APP_TOKENS", + "MANAGE_APP_TOKENS", "Landroid/view/IWindowManager$Stub$Proxy;-addWindowToken-(Landroid/os/IBinder; I)": - "MANAGE_APP_TOKENS", + "MANAGE_APP_TOKENS", "Landroid/view/IWindowManager$Stub$Proxy;-executeAppTransition-()": "MANAGE_APP_TOKENS", "Landroid/view/IWindowManager$Stub$Proxy;-moveAppToken-(I Landroid/os/IBinder;)": - "MANAGE_APP_TOKENS", + "MANAGE_APP_TOKENS", "Landroid/view/IWindowManager$Stub$Proxy;-moveAppTokensToBottom-(Ljava/util/List;)": - "MANAGE_APP_TOKENS", + "MANAGE_APP_TOKENS", "Landroid/view/IWindowManager$Stub$Proxy;-moveAppTokensToTop-(Ljava/util/List;)": - "MANAGE_APP_TOKENS", + "MANAGE_APP_TOKENS", "Landroid/view/IWindowManager$Stub$Proxy;-pauseKeyDispatching-(Landroid/os/IBinder;)": - "MANAGE_APP_TOKENS", + "MANAGE_APP_TOKENS", "Landroid/view/IWindowManager$Stub$Proxy;-prepareAppTransition-(I)": "MANAGE_APP_TOKENS", "Landroid/view/IWindowManager$Stub$Proxy;-removeAppToken-(Landroid/os/IBinder;)": - "MANAGE_APP_TOKENS", + "MANAGE_APP_TOKENS", "Landroid/view/IWindowManager$Stub$Proxy;-removeWindowToken-(Landroid/os/IBinder;)": - "MANAGE_APP_TOKENS", + "MANAGE_APP_TOKENS", "Landroid/view/IWindowManager$Stub$Proxy;-resumeKeyDispatching-(Landroid/os/IBinder;)": - "MANAGE_APP_TOKENS", + "MANAGE_APP_TOKENS", "Landroid/view/IWindowManager$Stub$Proxy;-setAppGroupId-(Landroid/os/IBinder; I)": - "MANAGE_APP_TOKENS", + "MANAGE_APP_TOKENS", "Landroid/view/IWindowManager$Stub$Proxy;-setAppOrientation-(Landroid/view/IApplicationToken; I)": - "MANAGE_APP_TOKENS", + "MANAGE_APP_TOKENS", "Landroid/view/IWindowManager$Stub$Proxy;-setAppStartingWindow-(Landroid/os/IBinder; Ljava/lang/String; I Ljava/lang/CharSequence; I I Landroid/os/IBinder; B)": - "MANAGE_APP_TOKENS", + "MANAGE_APP_TOKENS", "Landroid/view/IWindowManager$Stub$Proxy;-setAppVisibility-(Landroid/os/IBinder; B)": - "MANAGE_APP_TOKENS", + "MANAGE_APP_TOKENS", "Landroid/view/IWindowManager$Stub$Proxy;-setAppWillBeHidden-(Landroid/os/IBinder;)": - "MANAGE_APP_TOKENS", + "MANAGE_APP_TOKENS", "Landroid/view/IWindowManager$Stub$Proxy;-setEventDispatching-(B)": "MANAGE_APP_TOKENS", "Landroid/view/IWindowManager$Stub$Proxy;-setFocusedApp-(Landroid/os/IBinder; B)": - "MANAGE_APP_TOKENS", + "MANAGE_APP_TOKENS", "Landroid/view/IWindowManager$Stub$Proxy;-setNewConfiguration-(Landroid/content/res/Configuration;)": - "MANAGE_APP_TOKENS", + "MANAGE_APP_TOKENS", "Landroid/view/IWindowManager$Stub$Proxy;-startAppFreezingScreen-(Landroid/os/IBinder; I)": - "MANAGE_APP_TOKENS", + "MANAGE_APP_TOKENS", "Landroid/view/IWindowManager$Stub$Proxy;-stopAppFreezingScreen-(Landroid/os/IBinder; B)": - "MANAGE_APP_TOKENS", + "MANAGE_APP_TOKENS", "Landroid/view/IWindowManager$Stub$Proxy;-updateOrientationFromAppTokens-(Landroid/content/res/Configuration; Landroid/os/IBinder;)": - "MANAGE_APP_TOKENS", + "MANAGE_APP_TOKENS", "Landroid/provider/Browser;-BOOKMARKS_URI-Landroid/net/Uri;": "WRITE_HISTORY_BOOKMARKS", "Landroid/provider/Browser;-SEARCHES_URI-Landroid/net/Uri;": "WRITE_HISTORY_BOOKMARKS", "Landroid/provider/Browser;-addSearchUrl-(Landroid/content/ContentResolver; Ljava/lang/String;)": - "WRITE_HISTORY_BOOKMARKS", + "WRITE_HISTORY_BOOKMARKS", "Landroid/provider/Browser;-clearHistory-(Landroid/content/ContentResolver;)": - "WRITE_HISTORY_BOOKMARKS", + "WRITE_HISTORY_BOOKMARKS", "Landroid/provider/Browser;-clearSearches-(Landroid/content/ContentResolver;)": - "WRITE_HISTORY_BOOKMARKS", + "WRITE_HISTORY_BOOKMARKS", "Landroid/provider/Browser;-deleteFromHistory-(Landroid/content/ContentResolver; Ljava/lang/String;)": - "WRITE_HISTORY_BOOKMARKS", + "WRITE_HISTORY_BOOKMARKS", "Landroid/provider/Browser;-deleteHistoryTimeFrame-(Landroid/content/ContentResolver; J J)": - "WRITE_HISTORY_BOOKMARKS", + "WRITE_HISTORY_BOOKMARKS", "Landroid/provider/Browser;-truncateHistory-(Landroid/content/ContentResolver;)": - "WRITE_HISTORY_BOOKMARKS", + "WRITE_HISTORY_BOOKMARKS", "Landroid/provider/Browser;-updateVisitedHistory-(Landroid/content/ContentResolver; Ljava/lang/String; B)": - "WRITE_HISTORY_BOOKMARKS", + "WRITE_HISTORY_BOOKMARKS", "Landroid/provider/Browser;-clearSearches-(Landroid/content/ContentResolver;)": - "WRITE_HISTORY_BOOKMARKS", + "WRITE_HISTORY_BOOKMARKS", "Landroid/app/IActivityManager$Stub$Proxy;-unhandledBack-(I)": "FORCE_BACK", "Landroid/net/IConnectivityManager$Stub$Proxy;-requestRouteToHost-(I I)": - "CHANGE_NETWORK_STATE", + "CHANGE_NETWORK_STATE", "Landroid/net/IConnectivityManager$Stub$Proxy;-setMobileDataEnabled-(B)": - "CHANGE_NETWORK_STATE", + "CHANGE_NETWORK_STATE", "Landroid/net/IConnectivityManager$Stub$Proxy;-setNetworkPreference-(I)": - "CHANGE_NETWORK_STATE", + "CHANGE_NETWORK_STATE", "Landroid/net/IConnectivityManager$Stub$Proxy;-setRadio-(I B)": "CHANGE_NETWORK_STATE", "Landroid/net/IConnectivityManager$Stub$Proxy;-setRadios-(B)": "CHANGE_NETWORK_STATE", "Landroid/net/IConnectivityManager$Stub$Proxy;-stopUsingNetworkFeature-(I Ljava/lang/String;)": - "CHANGE_NETWORK_STATE", + "CHANGE_NETWORK_STATE", "Landroid/net/IConnectivityManager$Stub$Proxy;-tether-(Ljava/lang/String;)": - "CHANGE_NETWORK_STATE", + "CHANGE_NETWORK_STATE", "Landroid/net/IConnectivityManager$Stub$Proxy;-untether-(Ljava/lang/String;)": - "CHANGE_NETWORK_STATE", + "CHANGE_NETWORK_STATE", "Landroid/net/ConnectivityManager;-requestRouteToHost-(I I)": "CHANGE_NETWORK_STATE", "Landroid/net/ConnectivityManager;-setMobileDataEnabled-(B)": "CHANGE_NETWORK_STATE", "Landroid/net/ConnectivityManager;-setNetworkPreference-(I)": "CHANGE_NETWORK_STATE", "Landroid/net/ConnectivityManager;-setRadio-(I B)": "CHANGE_NETWORK_STATE", "Landroid/net/ConnectivityManager;-setRadios-(B)": "CHANGE_NETWORK_STATE", "Landroid/net/ConnectivityManager;-startUsingNetworkFeature-(I Ljava/lang/String;)": - "CHANGE_NETWORK_STATE", + "CHANGE_NETWORK_STATE", "Landroid/net/ConnectivityManager;-stopUsingNetworkFeature-(I Ljava/lang/String;)": - "CHANGE_NETWORK_STATE", + "CHANGE_NETWORK_STATE", "Landroid/net/ConnectivityManager;-tether-(Ljava/lang/String;)": "CHANGE_NETWORK_STATE", "Landroid/net/ConnectivityManager;-untether-(Ljava/lang/String;)": "CHANGE_NETWORK_STATE", "Landroid/os/INetworkManagementService$Stub$Proxy;-attachPppd-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)": - "CHANGE_NETWORK_STATE", + "CHANGE_NETWORK_STATE", "Landroid/os/INetworkManagementService$Stub$Proxy;-detachPppd-(Ljava/lang/String;)": - "CHANGE_NETWORK_STATE", + "CHANGE_NETWORK_STATE", "Landroid/os/INetworkManagementService$Stub$Proxy;-disableNat-(Ljava/lang/String; Ljava/lang/String;)": - "CHANGE_NETWORK_STATE", + "CHANGE_NETWORK_STATE", "Landroid/os/INetworkManagementService$Stub$Proxy;-enableNat-(Ljava/lang/String; Ljava/lang/String;)": - "CHANGE_NETWORK_STATE", + "CHANGE_NETWORK_STATE", "Landroid/os/INetworkManagementService$Stub$Proxy;-setAccessPoint-(Landroid/net/wifi/WifiConfiguration; Ljava/lang/String; Ljava/lang/String;)": - "CHANGE_NETWORK_STATE", + "CHANGE_NETWORK_STATE", "Landroid/os/INetworkManagementService$Stub$Proxy;-setInterfaceThrottle-(Ljava/lang/String; I I)": - "CHANGE_NETWORK_STATE", + "CHANGE_NETWORK_STATE", "Landroid/os/INetworkManagementService$Stub$Proxy;-setIpForwardingEnabled-(B)": - "CHANGE_NETWORK_STATE", + "CHANGE_NETWORK_STATE", "Landroid/os/INetworkManagementService$Stub$Proxy;-startAccessPoint-(Landroid/net/wifi/WifiConfiguration; Ljava/lang/String; Ljava/lang/String;)": - "CHANGE_NETWORK_STATE", + "CHANGE_NETWORK_STATE", "Landroid/os/INetworkManagementService$Stub$Proxy;-startUsbRNDIS-()": - "CHANGE_NETWORK_STATE", + "CHANGE_NETWORK_STATE", "Landroid/os/INetworkManagementService$Stub$Proxy;-stopAccessPoint-()": - "CHANGE_NETWORK_STATE", + "CHANGE_NETWORK_STATE", "Landroid/os/INetworkManagementService$Stub$Proxy;-stopTethering-()": - "CHANGE_NETWORK_STATE", + "CHANGE_NETWORK_STATE", "Landroid/os/INetworkManagementService$Stub$Proxy;-stopUsbRNDIS-()": - "CHANGE_NETWORK_STATE", + "CHANGE_NETWORK_STATE", "Landroid/os/INetworkManagementService$Stub$Proxy;-tetherInterface-(Ljava/lang/String;)": - "CHANGE_NETWORK_STATE", + "CHANGE_NETWORK_STATE", "Landroid/os/INetworkManagementService$Stub$Proxy;-unregisterObserver-(Landroid/net/INetworkManagementEventObserver;)": - "CHANGE_NETWORK_STATE", + "CHANGE_NETWORK_STATE", "Landroid/os/INetworkManagementService$Stub$Proxy;-untetherInterface-(Ljava/lang/String;)": - "CHANGE_NETWORK_STATE", + "CHANGE_NETWORK_STATE", "Landroid/app/ContextImpl$ApplicationContentResolver;-addPeriodicSync-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle; J)": - "WRITE_SYNC_SETTINGS", + "WRITE_SYNC_SETTINGS", "Landroid/app/ContextImpl$ApplicationContentResolver;-removePeriodicSync-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)": - "WRITE_SYNC_SETTINGS", + "WRITE_SYNC_SETTINGS", "Landroid/app/ContextImpl$ApplicationContentResolver;-setIsSyncable-(Landroid/accounts/Account; Ljava/lang/String; I)": - "WRITE_SYNC_SETTINGS", + "WRITE_SYNC_SETTINGS", "Landroid/app/ContextImpl$ApplicationContentResolver;-setMasterSyncAutomatically-(B)": - "WRITE_SYNC_SETTINGS", + "WRITE_SYNC_SETTINGS", "Landroid/app/ContextImpl$ApplicationContentResolver;-setSyncAutomatically-(Landroid/accounts/Account; Ljava/lang/String; B)": - "WRITE_SYNC_SETTINGS", + "WRITE_SYNC_SETTINGS", "Landroid/content/ContentService;-addPeriodicSync-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle; J)": - "WRITE_SYNC_SETTINGS", + "WRITE_SYNC_SETTINGS", "Landroid/content/ContentService;-removePeriodicSync-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)": - "WRITE_SYNC_SETTINGS", + "WRITE_SYNC_SETTINGS", "Landroid/content/ContentService;-setIsSyncable-(Landroid/accounts/Account; Ljava/lang/String; I)": - "WRITE_SYNC_SETTINGS", + "WRITE_SYNC_SETTINGS", "Landroid/content/ContentService;-setMasterSyncAutomatically-(B)": "WRITE_SYNC_SETTINGS", "Landroid/content/ContentService;-setSyncAutomatically-(Landroid/accounts/Account; Ljava/lang/String; B)": - "WRITE_SYNC_SETTINGS", + "WRITE_SYNC_SETTINGS", "Landroid/content/ContentResolver;-addPeriodicSync-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle; J)": - "WRITE_SYNC_SETTINGS", + "WRITE_SYNC_SETTINGS", "Landroid/content/ContentResolver;-removePeriodicSync-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)": - "WRITE_SYNC_SETTINGS", + "WRITE_SYNC_SETTINGS", "Landroid/content/ContentResolver;-setIsSyncable-(Landroid/accounts/Account; Ljava/lang/String; I)": - "WRITE_SYNC_SETTINGS", + "WRITE_SYNC_SETTINGS", "Landroid/content/ContentResolver;-setMasterSyncAutomatically-(B)": "WRITE_SYNC_SETTINGS", "Landroid/content/ContentResolver;-setSyncAutomatically-(Landroid/accounts/Account; Ljava/lang/String; B)": - "WRITE_SYNC_SETTINGS", + "WRITE_SYNC_SETTINGS", "Landroid/content/IContentService$Stub$Proxy;-addPeriodicSync-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle; J)": - "WRITE_SYNC_SETTINGS", + "WRITE_SYNC_SETTINGS", "Landroid/content/IContentService$Stub$Proxy;-removePeriodicSync-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)": - "WRITE_SYNC_SETTINGS", + "WRITE_SYNC_SETTINGS", "Landroid/content/IContentService$Stub$Proxy;-setIsSyncable-(Landroid/accounts/Account; Ljava/lang/String; I)": - "WRITE_SYNC_SETTINGS", + "WRITE_SYNC_SETTINGS", "Landroid/content/IContentService$Stub$Proxy;-setMasterSyncAutomatically-(B)": - "WRITE_SYNC_SETTINGS", + "WRITE_SYNC_SETTINGS", "Landroid/content/IContentService$Stub$Proxy;-setSyncAutomatically-(Landroid/accounts/Account; Ljava/lang/String; B)": - "WRITE_SYNC_SETTINGS", + "WRITE_SYNC_SETTINGS", "Landroid/accounts/AccountManager;-KEY_ACCOUNT_MANAGER_RESPONSE-Ljava/lang/String;": - "ACCOUNT_MANAGER", + "ACCOUNT_MANAGER", "Landroid/accounts/AbstractAccountAuthenticator;-checkBinderPermission-()": - "ACCOUNT_MANAGER", + "ACCOUNT_MANAGER", "Landroid/accounts/AbstractAccountAuthenticator;-confirmCredentials-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Landroid/os/Bundle;)": - "ACCOUNT_MANAGER", + "ACCOUNT_MANAGER", "Landroid/accounts/AbstractAccountAuthenticator;-editProperties-(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String;)": - "ACCOUNT_MANAGER", + "ACCOUNT_MANAGER", "Landroid/accounts/AbstractAccountAuthenticator;-getAccountRemovalAllowed-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account;)": - "ACCOUNT_MANAGER", + "ACCOUNT_MANAGER", "Landroid/accounts/AbstractAccountAuthenticator;-getAuthToken-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)": - "ACCOUNT_MANAGER", + "ACCOUNT_MANAGER", "Landroid/accounts/AbstractAccountAuthenticator;-getAuthTokenLabel-(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String;)": - "ACCOUNT_MANAGER", + "ACCOUNT_MANAGER", "Landroid/accounts/AbstractAccountAuthenticator;-hasFeatures-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; [L[Ljava/lang/Strin;)": - "ACCOUNT_MANAGER", + "ACCOUNT_MANAGER", "Landroid/accounts/AbstractAccountAuthenticator;-updateCredentials-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)": - "ACCOUNT_MANAGER", + "ACCOUNT_MANAGER", "Landroid/accounts/AbstractAccountAuthenticator;-addAccount-(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String; Ljava/lang/String; [L[Ljava/lang/Strin; Landroid/os/Bundle;)": - "ACCOUNT_MANAGER", + "ACCOUNT_MANAGER", "Landroid/accounts/AbstractAccountAuthenticator$Transport;-addAccount-(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String; Ljava/lang/String; [L[Ljava/lang/Strin; Landroid/os/Bundle;)": - "ACCOUNT_MANAGER", + "ACCOUNT_MANAGER", "Landroid/accounts/AbstractAccountAuthenticator$Transport;-confirmCredentials-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Landroid/os/Bundle;)": - "ACCOUNT_MANAGER", + "ACCOUNT_MANAGER", "Landroid/accounts/AbstractAccountAuthenticator$Transport;-editProperties-(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String;)": - "ACCOUNT_MANAGER", + "ACCOUNT_MANAGER", "Landroid/accounts/AbstractAccountAuthenticator$Transport;-getAccountRemovalAllowed-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account;)": - "ACCOUNT_MANAGER", + "ACCOUNT_MANAGER", "Landroid/accounts/AbstractAccountAuthenticator$Transport;-getAuthToken-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)": - "ACCOUNT_MANAGER", + "ACCOUNT_MANAGER", "Landroid/accounts/AbstractAccountAuthenticator$Transport;-getAuthTokenLabel-(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String;)": - "ACCOUNT_MANAGER", + "ACCOUNT_MANAGER", "Landroid/accounts/AbstractAccountAuthenticator$Transport;-hasFeatures-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; [L[Ljava/lang/Strin;)": - "ACCOUNT_MANAGER", + "ACCOUNT_MANAGER", "Landroid/accounts/AbstractAccountAuthenticator$Transport;-updateCredentials-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)": - "ACCOUNT_MANAGER", + "ACCOUNT_MANAGER", "Landroid/accounts/IAccountAuthenticator$Stub$Proxy;-addAccount-(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String; Ljava/lang/String; [L[Ljava/lang/Strin; Landroid/os/Bundle;)": - "ACCOUNT_MANAGER", + "ACCOUNT_MANAGER", "Landroid/accounts/IAccountAuthenticator$Stub$Proxy;-confirmCredentials-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Landroid/os/Bundle;)": - "ACCOUNT_MANAGER", + "ACCOUNT_MANAGER", "Landroid/accounts/IAccountAuthenticator$Stub$Proxy;-editProperties-(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String;)": - "ACCOUNT_MANAGER", + "ACCOUNT_MANAGER", "Landroid/accounts/IAccountAuthenticator$Stub$Proxy;-getAccountRemovalAllowed-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account;)": - "ACCOUNT_MANAGER", + "ACCOUNT_MANAGER", "Landroid/accounts/IAccountAuthenticator$Stub$Proxy;-getAuthToken-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)": - "ACCOUNT_MANAGER", + "ACCOUNT_MANAGER", "Landroid/accounts/IAccountAuthenticator$Stub$Proxy;-getAuthTokenLabel-(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String;)": - "ACCOUNT_MANAGER", + "ACCOUNT_MANAGER", "Landroid/accounts/IAccountAuthenticator$Stub$Proxy;-hasFeatures-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; [L[Ljava/lang/Strin;)": - "ACCOUNT_MANAGER", + "ACCOUNT_MANAGER", "Landroid/accounts/IAccountAuthenticator$Stub$Proxy;-updateCredentials-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)": - "ACCOUNT_MANAGER", + "ACCOUNT_MANAGER", "Landroid/view/IWindowManager$Stub$Proxy;-setAnimationScale-(I F)": "SET_ANIMATION_SCALE", "Landroid/view/IWindowManager$Stub$Proxy;-setAnimationScales-([L;)": "SET_ANIMATION_SCALE", "Landroid/accounts/AccountManager;-getAccounts-()": "GET_ACCOUNTS", "Landroid/accounts/AccountManager;-getAccountsByType-(Ljava/lang/String;)": "GET_ACCOUNTS", "Landroid/accounts/AccountManager;-getAccountsByTypeAndFeatures-(Ljava/lang/String; [Ljava/lang/String; [Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)": - "GET_ACCOUNTS", + "GET_ACCOUNTS", "Landroid/accounts/AccountManager;-addOnAccountsUpdatedListener-(Landroid/accounts/OnAccountsUpdateListener; Landroid/os/Handler; B)": - "GET_ACCOUNTS", + "GET_ACCOUNTS", "Landroid/accounts/AccountManager;-getAccounts-()": "GET_ACCOUNTS", "Landroid/accounts/AccountManager;-getAccountsByType-(Ljava/lang/String;)": "GET_ACCOUNTS", "Landroid/accounts/AccountManager;-getAccountsByTypeAndFeatures-(Ljava/lang/String; [L[Ljava/lang/Strin; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)": - "GET_ACCOUNTS", + "GET_ACCOUNTS", "Landroid/accounts/AccountManager;-getAuthTokenByFeatures-(Ljava/lang/String; Ljava/lang/String; [L[Ljava/lang/Strin; Landroid/app/Activity; Landroid/os/Bundle; Landroid/os/Bundle; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)": - "GET_ACCOUNTS", + "GET_ACCOUNTS", "Landroid/accounts/AccountManager;-hasFeatures-(Landroid/accounts/Account; [L[Ljava/lang/Strin; Landroid/accounts/AccountManagerCallback; Landroid/os/Handler;)": - "GET_ACCOUNTS", + "GET_ACCOUNTS", "Landroid/content/ContentService;--(Landroid/content/Context; B)": "GET_ACCOUNTS", "Landroid/content/ContentService;-main-(Landroid/content/Context; B)": "GET_ACCOUNTS", "Landroid/accounts/AccountManager$GetAuthTokenByTypeAndFeaturesTask;-doWork-()": - "GET_ACCOUNTS", + "GET_ACCOUNTS", "Landroid/accounts/AccountManager$GetAuthTokenByTypeAndFeaturesTask;-start-()": - "GET_ACCOUNTS", + "GET_ACCOUNTS", "Landroid/accounts/AccountManager$AmsTask;-doWork-()": "GET_ACCOUNTS", "Landroid/accounts/AccountManager$AmsTask;-start-()": "GET_ACCOUNTS", "Landroid/accounts/IAccountManager$Stub$Proxy;-getAccounts-(Ljava/lang/String;)": - "GET_ACCOUNTS", + "GET_ACCOUNTS", "Landroid/accounts/IAccountManager$Stub$Proxy;-getAccountsByFeatures-(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; [L[Ljava/lang/Strin;)": - "GET_ACCOUNTS", + "GET_ACCOUNTS", "Landroid/accounts/IAccountManager$Stub$Proxy;-hasFeatures-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; [L[Ljava/lang/Strin;)": - "GET_ACCOUNTS", + "GET_ACCOUNTS", "Landroid/accounts/AccountManagerService;-checkReadAccountsPermission-()": "GET_ACCOUNTS", "Landroid/accounts/AccountManagerService;-getAccounts-(Ljava/lang/String;)": - "GET_ACCOUNTS", + "GET_ACCOUNTS", "Landroid/accounts/AccountManagerService;-getAccountsByFeatures-(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; [L[Ljava/lang/Strin;)": - "GET_ACCOUNTS", + "GET_ACCOUNTS", "Landroid/accounts/AccountManagerService;-hasFeatures-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; [L[Ljava/lang/Strin;)": - "GET_ACCOUNTS", + "GET_ACCOUNTS", "Landroid/telephony/gsm/SmsManager;-copyMessageToSim-([L; [L; I)": "RECEIVE_SMS", "Landroid/telephony/gsm/SmsManager;-deleteMessageFromSim-(I)": "RECEIVE_SMS", "Landroid/telephony/gsm/SmsManager;-getAllMessagesFromSim-()": "RECEIVE_SMS", @@ -5916,31 +5916,31 @@ DVM_PERMISSIONS_BY_ELEMENT = { "Landroid/telephony/SmsManager;-getAllMessagesFromIcc-()": "RECEIVE_SMS", "Landroid/telephony/SmsManager;-updateMessageOnIcc-(I I [L;)": "RECEIVE_SMS", "Lcom/android/internal/telephony/ISms$Stub$Proxy;-copyMessageToIccEf-(I [B [B)": - "RECEIVE_SMS", + "RECEIVE_SMS", "Lcom/android/internal/telephony/ISms$Stub$Proxy;-getAllMessagesFromIccEf-()": - "RECEIVE_SMS", + "RECEIVE_SMS", "Lcom/android/internal/telephony/ISms$Stub$Proxy;-updateMessageOnIccEf-(I I [B)": - "RECEIVE_SMS", + "RECEIVE_SMS", "Landroid/app/IActivityManager$Stub$Proxy;-resumeAppSwitches-()": "STOP_APP_SWITCHES", "Landroid/app/IActivityManager$Stub$Proxy;-stopAppSwitches-()": "STOP_APP_SWITCHES", "Landroid/app/ContextImpl$ApplicationPackageManager;-deleteApplicationCacheFiles-(Ljava/lang/String; LIPackageDataObserver;)": - "DELETE_CACHE_FILES", + "DELETE_CACHE_FILES", "Landroid/app/ContextImpl$ApplicationPackageManager;-deleteApplicationCacheFiles-(Ljava/lang/String; Landroid/content/pm/IPackageDataObserver;)": - "DELETE_CACHE_FILES", + "DELETE_CACHE_FILES", "Landroid/content/pm/PackageManager;-deleteApplicationCacheFiles-(Ljava/lang/String; Landroid/content/pm/IPackageDataObserver;)": - "DELETE_CACHE_FILES", + "DELETE_CACHE_FILES", "Landroid/content/pm/IPackageManager$Stub$Proxy;-deleteApplicationCacheFiles-(Ljava/lang/String; Landroid/content/pm/IPackageDataObserver;)": - "DELETE_CACHE_FILES", + "DELETE_CACHE_FILES", "Landroid/os/Build/VERSION_CODES;-DONUT-I": "WRITE_EXTERNAL_STORAGE", "Landroid/app/DownloadManager/Request;-setDestinationUri-(Landroid/net/Uri;)": - "WRITE_EXTERNAL_STORAGE", + "WRITE_EXTERNAL_STORAGE", "Landroid/os/RecoverySystem;-installPackage-(Landroid/content/Context; Ljava/io/File;)": - "REBOOT", + "REBOOT", "Landroid/os/RecoverySystem;-rebootWipeUserData-(Landroid/content/Context;)": "REBOOT", "Landroid/os/RecoverySystem;-bootCommand-(Landroid/content/Context; Ljava/lang/String;)": - "REBOOT", + "REBOOT", "Landroid/os/RecoverySystem;-installPackage-(Landroid/content/Context; Ljava/io/File;)": - "REBOOT", + "REBOOT", "Landroid/os/RecoverySystem;-rebootWipeUserData-(Landroid/content/Context;)": "REBOOT", "Landroid/content/Intent;-IntentResolution-Ljava/lang/String;": "REBOOT", "Landroid/content/Intent;-ACTION_REBOOT-Ljava/lang/String;": "REBOOT", @@ -5949,111 +5949,111 @@ DVM_PERMISSIONS_BY_ELEMENT = { "Landroid/os/IPowerManager$Stub$Proxy;-crash-(Ljava/lang/String;)": "REBOOT", "Landroid/os/IPowerManager$Stub$Proxy;-reboot-(Ljava/lang/String;)": "REBOOT", "Landroid/app/ContextImpl$ApplicationPackageManager;-installPackage-(Landroid/net/Uri; LIPackageInstallObserver; I Ljava/lang/String;)": - "INSTALL_PACKAGES", + "INSTALL_PACKAGES", "Landroid/app/ContextImpl$ApplicationPackageManager;-installPackage-(Landroid/net/Uri; LIPackageInstallObserver; I Ljava/lang/String;)": - "INSTALL_PACKAGES", + "INSTALL_PACKAGES", "Landroid/content/pm/PackageManager;-installPackage-(Landroid/net/Uri; LIPackageInstallObserver; I Ljava/lang/String;)": - "INSTALL_PACKAGES", + "INSTALL_PACKAGES", "Landroid/content/pm/IPackageManager$Stub$Proxy;-installPackage-(Landroid/net/Uri; Landroid/content/pm/IPackageInstallObserver; I Ljava/lang/String;)": - "INSTALL_PACKAGES", + "INSTALL_PACKAGES", "Landroid/app/IActivityManager$Stub$Proxy;-setDebugApp-(Ljava/lang/String; B B)": - "SET_DEBUG_APP", + "SET_DEBUG_APP", "Landroid/location/ILocationManager$Stub$Proxy;-reportLocation-(Landroid/location/Location; B)": - "INSTALL_LOCATION_PROVIDER", + "INSTALL_LOCATION_PROVIDER", "Landroid/app/WallpaperManager;-suggestDesiredDimensions-(I I)": "SET_WALLPAPER_HINTS", "Landroid/app/IWallpaperManager$Stub$Proxy;-setDimensionHints-(I I)": "SET_WALLPAPER_HINTS", "Landroid/app/ContextImpl$ApplicationContentResolver;-openFileDescriptor-(Landroid/net/Uri; Ljava/lang/String;)": - "READ_CONTACTS", + "READ_CONTACTS", "Landroid/app/ContextImpl$ApplicationContentResolver;-openInputStream-(Landroid/net/Uri;)": - "READ_CONTACTS", + "READ_CONTACTS", "Landroid/app/ContextImpl$ApplicationContentResolver;-openOutputStream-(Landroid/net/Uri;)": - "READ_CONTACTS", + "READ_CONTACTS", "Landroid/app/ContextImpl$ApplicationContentResolver;-query-(Landroid/net/Uri; [L[Ljava/lang/Strin; Ljava/lang/String; [L[Ljava/lang/Strin; Ljava/lang/String;)": - "READ_CONTACTS", + "READ_CONTACTS", "Lcom/android/internal/telephony/IccPhoneBookInterfaceManager$Stub$Proxy;-getAdnRecordsInEf-(I)": - "READ_CONTACTS", + "READ_CONTACTS", "Landroid/provider/Contacts$People;-addToGroup-(Landroid/content/ContentResolver; J Ljava/lang/String;)": - "READ_CONTACTS", + "READ_CONTACTS", "Landroid/provider/Contacts$People;-addToMyContactsGroup-(Landroid/content/ContentResolver; J)": - "READ_CONTACTS", + "READ_CONTACTS", "Landroid/provider/Contacts$People;-createPersonInMyContactsGroup-(Landroid/content/ContentResolver; Landroid/content/ContentValues;)": - "READ_CONTACTS", + "READ_CONTACTS", "Landroid/provider/Contacts$People;-loadContactPhoto-(Landroid/content/Context; Landroid/net/Uri; I Landroid/graphics/BitmapFactory$Options;)": - "READ_CONTACTS", + "READ_CONTACTS", "Landroid/provider/Contacts$People;-markAsContacted-(Landroid/content/ContentResolver; J)": - "READ_CONTACTS", + "READ_CONTACTS", "Landroid/provider/Contacts$People;-openContactPhotoInputStream-(Landroid/content/ContentResolver; Landroid/net/Uri;)": - "READ_CONTACTS", + "READ_CONTACTS", "Landroid/provider/Contacts$People;-queryGroups-(Landroid/content/ContentResolver; J)": - "READ_CONTACTS", + "READ_CONTACTS", "Landroid/provider/Contacts$People;-setPhotoData-(Landroid/content/ContentResolver; Landroid/net/Uri; [L;)": - "READ_CONTACTS", + "READ_CONTACTS", "Landroid/provider/Contacts$People;-tryGetMyContactsGroupId-(Landroid/content/ContentResolver;)": - "READ_CONTACTS", + "READ_CONTACTS", "Landroid/provider/ContactsContract$Data;-getContactLookupUri-(Landroid/content/ContentResolver; Landroid/net/Uri;)": - "READ_CONTACTS", + "READ_CONTACTS", "Landroid/provider/ContactsContract$Contacts;-getLookupUri-(Landroid/content/ContentResolver; Landroid/net/Uri;)": - "READ_CONTACTS", + "READ_CONTACTS", "Landroid/provider/ContactsContract$Contacts;-lookupContact-(Landroid/content/ContentResolver; Landroid/net/Uri;)": - "READ_CONTACTS", + "READ_CONTACTS", "Landroid/provider/ContactsContract$Contacts;-openContactPhotoInputStream-(Landroid/content/ContentResolver; Landroid/net/Uri;)": - "READ_CONTACTS", + "READ_CONTACTS", "Landroid/pim/vcard/VCardComposer;-createOneEntry-()": "READ_CONTACTS", "Landroid/pim/vcard/VCardComposer;-createOneEntry-(Ljava/lang/reflect/Method;)": - "READ_CONTACTS", + "READ_CONTACTS", "Landroid/pim/vcard/VCardComposer;-createOneEntryInternal-(Ljava/lang/String; Ljava/lang/reflect/Method;)": - "READ_CONTACTS", + "READ_CONTACTS", "Landroid/pim/vcard/VCardComposer;-init-()": "READ_CONTACTS", "Landroid/pim/vcard/VCardComposer;-init-(Ljava/lang/String; [L[Ljava/lang/Strin;)": - "READ_CONTACTS", + "READ_CONTACTS", "Landroid/pim/vcard/VCardComposer$OneEntryHandler;-onInit-(Landroid/content/Context;)": - "READ_CONTACTS", + "READ_CONTACTS", "Lcom/android/internal/telephony/CallerInfo;-getCallerId-(Landroid/content/Context; Ljava/lang/String;)": - "READ_CONTACTS", + "READ_CONTACTS", "Lcom/android/internal/telephony/CallerInfo;-getCallerInfo-(Landroid/content/Context; Ljava/lang/String;)": - "READ_CONTACTS", + "READ_CONTACTS", "Landroid/provider/Contacts$Settings;-getSetting-(Landroid/content/ContentResolver; Ljava/lang/String; Ljava/lang/String;)": - "READ_CONTACTS", + "READ_CONTACTS", "Landroid/provider/ContactsContract$RawContacts;-getContactLookupUri-(Landroid/content/ContentResolver; Landroid/net/Uri;)": - "READ_CONTACTS", + "READ_CONTACTS", "Landroid/provider/CallLog$Calls;-addCall-(Lcom/android/internal/telephony/CallerInfo; Landroid/content/Context; Ljava/lang/String; I I J I)": - "READ_CONTACTS", + "READ_CONTACTS", "Landroid/provider/CallLog$Calls;-getLastOutgoingCall-(Landroid/content/Context;)": - "READ_CONTACTS", + "READ_CONTACTS", "Lcom/android/internal/telephony/IIccPhoneBook$Stub$Proxy;-getAdnRecordsInEf-(I)": - "READ_CONTACTS", + "READ_CONTACTS", "Landroid/pim/vcard/VCardComposer$HandlerForOutputStream;-onInit-(Landroid/content/Context;)": - "READ_CONTACTS", + "READ_CONTACTS", "Landroid/provider/ContactsContract$CommonDataKinds$Phone;-CONTENT_URI-Landroid/net/Uri;": - "READ_CONTACTS", + "READ_CONTACTS", "Landroid/widget/QuickContactBadge;-assignContactFromEmail-(Ljava/lang/String; B)": - "READ_CONTACTS", + "READ_CONTACTS", "Landroid/widget/QuickContactBadge;-assignContactFromPhone-(Ljava/lang/String; B)": - "READ_CONTACTS", + "READ_CONTACTS", "Landroid/widget/QuickContactBadge;-trigger-(Landroid/net/Uri;)": "READ_CONTACTS", "Landroid/content/ContentResolver;-openFileDescriptor-(Landroid/net/Uri; Ljava/lang/String;)": - "READ_CONTACTS", + "READ_CONTACTS", "Landroid/content/ContentResolver;-openInputStream-(Landroid/net/Uri;)": "READ_CONTACTS", "Landroid/content/ContentResolver;-openOutputStream-(Landroid/net/Uri;)": "READ_CONTACTS", "Landroid/content/ContentResolver;-query-(Landroid/net/Uri; [L[Ljava/lang/Strin; Ljava/lang/String; [L[Ljava/lang/Strin; Ljava/lang/String;)": - "READ_CONTACTS", + "READ_CONTACTS", "Landroid/app/backup/IBackupManager$Stub$Proxy;-backupNow-()": "BACKUP", "Landroid/app/backup/IBackupManager$Stub$Proxy;-beginRestoreSession-(Ljava/lang/String;)": - "BACKUP", + "BACKUP", "Landroid/app/backup/IBackupManager$Stub$Proxy;-clearBackupData-(Ljava/lang/String;)": - "BACKUP", + "BACKUP", "Landroid/app/backup/IBackupManager$Stub$Proxy;-dataChanged-(Ljava/lang/String;)": "BACKUP", "Landroid/app/backup/IBackupManager$Stub$Proxy;-getCurrentTransport-()": "BACKUP", "Landroid/app/backup/IBackupManager$Stub$Proxy;-isBackupEnabled-()": "BACKUP", "Landroid/app/backup/IBackupManager$Stub$Proxy;-listAllTransports-()": "BACKUP", "Landroid/app/backup/IBackupManager$Stub$Proxy;-selectBackupTransport-(Ljava/lang/String;)": - "BACKUP", + "BACKUP", "Landroid/app/backup/IBackupManager$Stub$Proxy;-setAutoRestore-(B)": "BACKUP", "Landroid/app/backup/IBackupManager$Stub$Proxy;-setBackupEnabled-(B)": "BACKUP", "Landroid/app/IActivityManager$Stub$Proxy;-bindBackupAgent-(Landroid/content/pm/ApplicationInfo; I)": - "BACKUP", + "BACKUP", "Landroid/app/backup/BackupManager;-beginRestoreSession-()": "BACKUP", "Landroid/app/backup/BackupManager;-dataChanged-(Ljava/lang/String;)": "BACKUP", "Landroid/app/backup/BackupManager;-requestRestore-(Landroid/app/backup/RestoreObserver;)": - "BACKUP", + "BACKUP", } diff --git a/androguard/core/bytecodes/apk.py b/androguard/core/bytecodes/apk.py index 5fe6e052..29b65bd6 100644 --- a/androguard/core/bytecodes/apk.py +++ b/androguard/core/bytecodes/apk.py @@ -2,6 +2,7 @@ from __future__ import division from __future__ import print_function from future import standard_library + standard_library.install_aliases() from builtins import chr from builtins import str @@ -42,6 +43,7 @@ ZIPMODULE = 1 if sys.hexversion < 0x2070000: try: import chilkat + ZIPMODULE = 0 # UNLOCK : change it with your valid key ! try: @@ -57,7 +59,6 @@ else: ################################################### CHILKAT ZIP FORMAT ##################################################### class ChilkatZip(object): - def __init__(self, raw): self.files = [] self.zip = chilkat.CkZip() @@ -251,7 +252,6 @@ class APK(object): self.permission_module = androconf.load_api_specific_resource_module( "aosp_permissions", self.get_target_sdk_version()) - def __getstate__(self): # Upon pickling, we need to remove the ZipFile x = self.__dict__ @@ -587,7 +587,7 @@ class APK(object): :rtype: string """ for i in self.xml: - if self.xml[i] is None : + if self.xml[i] is None: continue tag = self.xml[i].getElementsByTagName(tag_name) if tag is None: @@ -686,7 +686,7 @@ class APK(object): for item in self.xml[i].getElementsByTagName(category): if self.format_value( item.getAttributeNS(NS_ANDROID_URI, "name") - ) == name: + ) == name: for sitem in item.getElementsByTagName("intent-filter"): for ssitem in sitem.getElementsByTagName("action"): if ssitem.getAttributeNS(NS_ANDROID_URI, "name") \ @@ -853,9 +853,9 @@ class APK(object): if not isinstance(l, int): l = ord(l) cert = cert[2 + (l & 0x7F) if l & 0x80 > 1 else 2:] - + certificate = x509.load_der_x509_certificate(cert, default_backend()) - + return certificate def new_zip(self, filename, deleted_files=None, new_files={}): @@ -1029,21 +1029,23 @@ def get_Name(name, short=False): :rtype: str """ - + # For the shortform, we have a lookup table # See RFC4514 for more details sf = { - "countryName": "C", - "stateOrProvinceName": "ST", - "localityName": "L", - "organizationalUnitName": "OU", - "organizationName": "O", - "commonName": "CN", - "emailAddress": "E", - } - return ", ".join(["{}={}".format(attr.oid._name if not short or attr.oid._name not in sf else sf[attr.oid._name], attr.value) for attr in name]) - - + "countryName": "C", + "stateOrProvinceName": "ST", + "localityName": "L", + "organizationalUnitName": "OU", + "organizationName": "O", + "commonName": "CN", + "emailAddress": "E", + } + return ", ".join( + ["{}={}".format(attr.oid._name if not short or attr.oid._name not in sf else sf[attr.oid._name], attr.value) for + attr in name]) + + def show_Certificate(cert, short=False): """ Print Fingerprints, Issuer and Subject of an X509 Certificate. @@ -1054,12 +1056,13 @@ def show_Certificate(cert, short=False): :type cert: :class:`cryptography.x509.Certificate` :type short: Boolean """ - + for h in [hashes.MD5, hashes.SHA1, hashes.SHA256, hashes.SHA512]: print("{}: {}".format(h.name, binascii.hexlify(cert.fingerprint(h())).decode("ascii"))) print("Issuer: {}".format(get_Name(cert.issuer, short=short))) print("Subject: {}".format(get_Name(cert.subject, short=short))) + ################################## AXML FORMAT ######################################## # Translated from # http://code.google.com/p/android4me/source/browse/src/android/content/res/AXmlResourceParser.java @@ -1068,7 +1071,6 @@ UTF8_FLAG = 0x00000100 class StringBlock(object): - def __init__(self, buff, header): self._cache = {} self.header = header @@ -1213,7 +1215,6 @@ TEXT = 4 class AXMLParser(object): - def __init__(self, raw_buff): self.reset() @@ -1379,7 +1380,7 @@ class AXMLParser(object): def getName(self): if self.m_name == -1 or (self.m_event != START_TAG and - self.m_event != END_TAG): + self.m_event != END_TAG): return u'' return self.sb.getString(self.m_name) @@ -1567,7 +1568,6 @@ def format_value(_type, _data, lookup_string=lambda ix: ""): class AXMLPrinter(object): - def __init__(self, raw_buff): self.axml = AXMLParser(raw_buff) self.xmlns = False @@ -1675,7 +1675,6 @@ ACONFIGURATION_UI_MODE = 0x1000 class ARSCParser(object): - def __init__(self, raw_buff): self.analyzed = False self._resolved_strings = None @@ -1755,7 +1754,7 @@ class ARSCParser(object): a_res_type = ARSCResType(self.buff, pc) self.packages[package_name].append(a_res_type) self.resource_configs[package_name][a_res_type].add( - a_res_type.config) + a_res_type.config) entries = [] for i in range(0, a_res_type.entryCount): @@ -1898,7 +1897,7 @@ class ARSCParser(object): ate.get_value(), "%s%s" % ( complexToFloat(ate.key.get_data()), DIMENSION_UNITS[ate.key.get_data() & COMPLEX_UNIT_MASK]) - ] + ] except IndexError: androconf.debug("Out of range dimension unit index for %s: %s" % ( complexToFloat(ate.key.get_data()), @@ -2202,14 +2201,13 @@ class ARSCParser(object): for res_type, configs in list(self.resource_configs[package_name].items()): if res_type.get_package_name() == package_name and ( - type_name is None or res_type.get_type() == type_name): + type_name is None or res_type.get_type() == type_name): result[res_type.get_type()].extend(configs) return result class PackageContext(object): - def __init__(self, current_package, stringpool_main, mTableStrings, mKeyStrings): self.stringpool_main = stringpool_main @@ -2238,7 +2236,6 @@ class ARSCHeader(object): class ARSCResTablePackage(object): - def __init__(self, buff, header): self.header = header self.start = buff.get_idx() @@ -2257,7 +2254,6 @@ class ARSCResTablePackage(object): class ARSCResTypeSpec(object): - def __init__(self, buff, parent=None): self.start = buff.get_idx() self.parent = parent @@ -2272,7 +2268,6 @@ class ARSCResTypeSpec(object): class ARSCResType(object): - def __init__(self, buff, parent=None): self.start = buff.get_idx() self.parent = parent @@ -2412,7 +2407,6 @@ class ARSCResTableConfig(object): class ARSCResTableEntry(object): - def __init__(self, buff, mResId, parent=None): self.start = buff.get_idx() self.mResId = mResId @@ -2452,7 +2446,6 @@ class ARSCResTableEntry(object): class ARSCComplex(object): - def __init__(self, buff, parent=None): self.start = buff.get_idx() self.parent = parent @@ -2470,7 +2463,6 @@ class ARSCComplex(object): class ARSCResStringPoolRef(object): - def __init__(self, buff, parent=None): self.start = buff.get_idx() self.parent = parent diff --git a/androguard/core/bytecodes/dvm.py b/androguard/core/bytecodes/dvm.py index 17f6ae9a..8d03f0fa 100644 --- a/androguard/core/bytecodes/dvm.py +++ b/androguard/core/bytecodes/dvm.py @@ -85,6 +85,7 @@ class Error(Exception): class InvalidInstruction(Error): pass + def get_access_flags_string(value): """ Transform an access flags to the corresponding string @@ -187,7 +188,6 @@ def get_byte(buff): return unpack('=B', bytearray(buff.read(1)))[0] - def readuleb128(buff): result = get_byte(buff) if result > 0x7f: @@ -339,7 +339,7 @@ def determineException(vm, m): h_off[offset_handler] = [] h_off[offset_handler].append([try_item]) - #print m.get_name(), "\t HANDLER_CATCH_LIST SIZE", handler_catch_list.size, handler_catch_list.get_offset() + # print m.get_name(), "\t HANDLER_CATCH_LIST SIZE", handler_catch_list.size, handler_catch_list.get_offset() for handler_catch in handler_catch_list.get_list(): if handler_catch.get_off() not in h_off: continue @@ -348,7 +348,7 @@ def determineException(vm, m): i.append(handler_catch) exceptions = [] - #print m.get_name(), h_off + # print m.get_name(), h_off for i in h_off: for value in h_off[i]: try_value = value[0] @@ -368,7 +368,7 @@ def determineException(vm, m): exceptions.append(z) - #print m.get_name(), exceptions + # print m.get_name(), exceptions return exceptions @@ -473,28 +473,28 @@ class HeaderItem(object): self.data_size = len(self.data_off_obj.map_item) self.data_off = self.data_off_obj.get_off() - return pack("=Q", self.magic) + \ - pack("=i", self.checksum) + \ - pack("=20s", self.signature) + \ - pack("=I", self.file_size) + \ - pack("=I", self.header_size) + \ - pack("=I", self.endian_tag) + \ - pack("=I", self.link_size) + \ - pack("=I", self.link_off) + \ - pack("=I", self.map_off) + \ - pack("=I", self.string_ids_size) + \ - pack("=I", self.string_ids_off) + \ - pack("=I", self.type_ids_size) + \ - pack("=I", self.type_ids_off) + \ - pack("=I", self.proto_ids_size) + \ - pack("=I", self.proto_ids_off) + \ - pack("=I", self.field_ids_size) + \ - pack("=I", self.field_ids_off) + \ - pack("=I", self.method_ids_size) + \ - pack("=I", self.method_ids_off) + \ - pack("=I", self.class_defs_size) + \ - pack("=I", self.class_defs_off) + \ - pack("=I", self.data_size) + \ + return pack("=Q", self.magic) + \ + pack("=i", self.checksum) + \ + pack("=20s", self.signature) + \ + pack("=I", self.file_size) + \ + pack("=I", self.header_size) + \ + pack("=I", self.endian_tag) + \ + pack("=I", self.link_size) + \ + pack("=I", self.link_off) + \ + pack("=I", self.map_off) + \ + pack("=I", self.string_ids_size) + \ + pack("=I", self.string_ids_off) + \ + pack("=I", self.type_ids_size) + \ + pack("=I", self.type_ids_off) + \ + pack("=I", self.proto_ids_size) + \ + pack("=I", self.proto_ids_off) + \ + pack("=I", self.field_ids_size) + \ + pack("=I", self.field_ids_off) + \ + pack("=I", self.method_ids_size) + \ + pack("=I", self.method_ids_off) + \ + pack("=I", self.class_defs_size) + \ + pack("=I", self.class_defs_off) + \ + pack("=I", self.data_size) + \ pack("=I", self.data_off) def get_raw(self): @@ -613,7 +613,7 @@ class AnnotationSetItem(object): def get_raw(self): return self.get_obj() + b''.join(i.get_raw() - for i in self.annotation_off_item) + for i in self.annotation_off_item) def get_length(self): length = len(self.get_obj()) @@ -1007,15 +1007,15 @@ class AnnotationsDirectoryItem(object): self.class_annotations_off = self.CM.get_obj_by_offset( self.class_annotations_off).get_off() - return pack("=I", self.class_annotations_off) + \ - pack("=I", self.annotated_fields_size) + \ - pack("=I", self.annotated_methods_size) + \ + return pack("=I", self.class_annotations_off) + \ + pack("=I", self.annotated_fields_size) + \ + pack("=I", self.annotated_methods_size) + \ pack("=I", self.annotated_parameters_size) def get_raw(self): return self.get_obj() + \ - b''.join(i.get_raw() for i in self.field_annotations) + \ - b''.join(i.get_raw() for i in self.method_annotations) + \ + b''.join(i.get_raw() for i in self.field_annotations) + \ + b''.join(i.get_raw() for i in self.method_annotations) + \ b''.join(i.get_raw() for i in self.parameter_annotations) def get_length(self): @@ -1174,15 +1174,15 @@ class TypeList(object): return length -DBG_END_SEQUENCE = 0x00 # (none) terminates a debug info sequence for a code_item -DBG_ADVANCE_PC = 0x01 # uleb128 addr_diff addr_diff: amount to add to address register advances the address register without emitting a positions entry -DBG_ADVANCE_LINE = 0x02 # sleb128 line_diff line_diff: amount to change line register by advances the line register without emitting a positions entry -DBG_START_LOCAL = 0x03 # uleb128 register_num +DBG_END_SEQUENCE = 0x00 # (none) terminates a debug info sequence for a code_item +DBG_ADVANCE_PC = 0x01 # uleb128 addr_diff addr_diff: amount to add to address register advances the address register without emitting a positions entry +DBG_ADVANCE_LINE = 0x02 # sleb128 line_diff line_diff: amount to change line register by advances the line register without emitting a positions entry +DBG_START_LOCAL = 0x03 # uleb128 register_num # uleb128p1 name_idx # uleb128p1 type_idx # register_num: register that will contain local name_idx: string index of the name # type_idx: type index of the type introduces a local variable at the current address. Either name_idx or type_idx may be NO_INDEX to indicate that that value is unknown. -DBG_START_LOCAL_EXTENDED = 0x04 # uleb128 register_num uleb128p1 name_idx uleb128p1 type_idx uleb128p1 sig_idx +DBG_START_LOCAL_EXTENDED = 0x04 # uleb128 register_num uleb128p1 name_idx uleb128p1 type_idx uleb128p1 sig_idx # register_num: register that will contain local # name_idx: string index of the name # type_idx: type index of the type @@ -1190,27 +1190,26 @@ DBG_START_LOCAL_EXTENDED = 0x04 # uleb128 register_num uleb128p1 name_idx ule # introduces a local with a type signature at the current address. Any of name_idx, type_idx, or sig_idx may be NO_INDEX to indicate that that value is unknown. ( # If sig_idx is -1, though, the same data could be represented more efficiently using the opcode DBG_START_LOCAL.) # Note: See the discussion under "dalvik.annotation.Signature" below for caveats about handling signatures. -DBG_END_LOCAL = 0x05 # uleb128 register_num +DBG_END_LOCAL = 0x05 # uleb128 register_num # register_num: register that contained local # marks a currently-live local variable as out of scope at the current address -DBG_RESTART_LOCAL = 0x06 # uleb128 register_num +DBG_RESTART_LOCAL = 0x06 # uleb128 register_num # register_num: register to restart re-introduces a local variable at the current address. # The name and type are the same as the last local that was live in the specified register. -DBG_SET_PROLOGUE_END = 0x07 # (none) sets the prologue_end state machine register, indicating that the next position entry that is added should be considered the end of a +DBG_SET_PROLOGUE_END = 0x07 # (none) sets the prologue_end state machine register, indicating that the next position entry that is added should be considered the end of a # method prologue (an appropriate place for a method breakpoint). The prologue_end register is cleared by any special (>= 0x0a) opcode. -DBG_SET_EPILOGUE_BEGIN = 0x08 # (none) sets the epilogue_begin state machine register, indicating that the next position entry that is added should be considered the beginning +DBG_SET_EPILOGUE_BEGIN = 0x08 # (none) sets the epilogue_begin state machine register, indicating that the next position entry that is added should be considered the beginning # of a method epilogue (an appropriate place to suspend execution before method exit). The epilogue_begin register is cleared by any special (>= 0x0a) opcode. -DBG_SET_FILE = 0x09 # uleb128p1 name_idx +DBG_SET_FILE = 0x09 # uleb128p1 name_idx # name_idx: string index of source file name; NO_INDEX if unknown indicates that all subsequent line number entries make reference to this source file name, # instead of the default name specified in code_item -DBG_Special_Opcodes_BEGIN = 0x0a # (none) advances the line and address registers, emits a position entry, and clears prologue_end and epilogue_begin. See below for description. +DBG_Special_Opcodes_BEGIN = 0x0a # (none) advances the line and address registers, emits a position entry, and clears prologue_end and epilogue_begin. See below for description. DBG_Special_Opcodes_END = 0xff DBG_LINE_BASE = -4 DBG_LINE_RANGE = 15 class DBGBytecode(object): - def __init__(self, cm, op_value): self.CM = cm self.op_value = op_value @@ -1249,7 +1248,6 @@ class DBGBytecode(object): class DebugInfoItem(object): - def __init__(self, buff, cm): self.CM = cm @@ -1258,7 +1256,7 @@ class DebugInfoItem(object): self.line_start = readuleb128(buff) self.parameters_size = readuleb128(buff) - #print "line", self.line_start, "params", self.parameters_size + # print "line", self.line_start, "params", self.parameters_size self.parameter_names = [] for i in range(0, self.parameters_size): @@ -1294,7 +1292,7 @@ class DebugInfoItem(object): pass elif bcode_value == DBG_SET_FILE: bcode.add(readuleb128p1(buff), "u1") - else: #bcode_value >= DBG_Special_Opcodes_BEGIN and bcode_value <= DBG_Special_Opcodes_END: + else: # bcode_value >= DBG_Special_Opcodes_BEGIN and bcode_value <= DBG_Special_Opcodes_END: pass bcode = DBGBytecode(self.CM, get_byte(buff)) @@ -1338,10 +1336,10 @@ class DebugInfoItem(object): i.show() def get_raw(self): - return [ bytecode.Buff( self.__offset, writeuleb128( self.line_start ) + \ - writeuleb128( self.parameters_size ) + \ - b''.join(writeuleb128(i) for i in self.parameter_names) + \ - b''.join(i.get_raw() for i in self.bytecodes) ) ] + return [bytecode.Buff(self.__offset, writeuleb128(self.line_start) + \ + writeuleb128(self.parameters_size) + \ + b''.join(writeuleb128(i) for i in self.parameter_names) + \ + b''.join(i.get_raw() for i in self.bytecodes))] def get_off(self): return self.offset @@ -1366,7 +1364,6 @@ VALUE_BOOLEAN = 0x1f # boolean (0..1) (none) one-bit value; 0 for false and 1 class DebugInfoItemEmpty(object): - def __init__(self, buff, cm): self.CM = cm @@ -2339,9 +2336,9 @@ class FieldIdItem(object): (self.class_idx_value, self.type_idx_value, self.name_idx_value)) def get_obj(self): - return pack("=H", self.class_idx) + \ - pack("=H", self.type_idx) + \ - pack("=I", self.name_idx) + return pack("=H", self.class_idx) + \ + pack("=H", self.type_idx) + \ + pack("=I", self.name_idx) def get_raw(self): return self.get_obj() @@ -2432,9 +2429,9 @@ class MethodIdItem(object): pass def _reload(self): - self.class_idx_value = self.CM.get_type(self.class_idx) - self.proto_idx_value = self.CM.get_proto(self.proto_idx) - self.name_idx_value = self.CM.get_string(self.name_idx) + self.class_idx_value = self.CM.get_type(self.class_idx) + self.proto_idx_value = self.CM.get_proto(self.proto_idx) + self.name_idx_value = self.CM.get_string(self.name_idx) def get_class_idx(self): """ @@ -2598,7 +2595,6 @@ class MethodHIdItem(object): class ProtoIdItemInvalid(object): - def get_params(self): return "AG:IPI:invalid_params;" @@ -2614,7 +2610,6 @@ class ProtoIdItemInvalid(object): class FieldIdItemInvalid(object): - def get_class_name(self): return "AG:IFI:invalid_class_name;" @@ -2635,7 +2630,6 @@ class FieldIdItemInvalid(object): class MethodIdItemInvalid(object): - def get_class_name(self): return "AG:IMI:invalid_class_name;" @@ -3357,8 +3351,9 @@ class ClassDataItem(object): def show(self): bytecode._PrintSubBanner("Class Data Item") - bytecode._PrintDefault("static_fields_size=%d instance_fields_size=%d direct_methods_size=%d virtual_methods_size=%d\n" % \ - (self.static_fields_size, self.instance_fields_size, self.direct_methods_size, self.virtual_methods_size)) + bytecode._PrintDefault( + "static_fields_size=%d instance_fields_size=%d direct_methods_size=%d virtual_methods_size=%d\n" % \ + (self.static_fields_size, self.instance_fields_size, self.direct_methods_size, self.virtual_methods_size)) bytecode._PrintSubBanner("Static Fields") for i in self.static_fields: @@ -3377,28 +3372,28 @@ class ClassDataItem(object): i.show() def get_obj(self): - return [ i for i in self.static_fields ] + \ - [ i for i in self.instance_fields ] + \ - [ i for i in self.direct_methods ] + \ - [ i for i in self.virtual_methods ] + return [i for i in self.static_fields] + \ + [i for i in self.instance_fields] + \ + [i for i in self.direct_methods] + \ + [i for i in self.virtual_methods] def get_raw(self): - buff = writeuleb128( self.static_fields_size ) + \ - writeuleb128( self.instance_fields_size ) + \ - writeuleb128( self.direct_methods_size ) + \ - writeuleb128( self.virtual_methods_size ) + \ - b''.join(i.get_raw() for i in self.static_fields) + \ - b''.join(i.get_raw() for i in self.instance_fields) + \ - b''.join(i.get_raw() for i in self.direct_methods) + \ - b''.join(i.get_raw() for i in self.virtual_methods) + buff = writeuleb128(self.static_fields_size) + \ + writeuleb128(self.instance_fields_size) + \ + writeuleb128(self.direct_methods_size) + \ + writeuleb128(self.virtual_methods_size) + \ + b''.join(i.get_raw() for i in self.static_fields) + \ + b''.join(i.get_raw() for i in self.instance_fields) + \ + b''.join(i.get_raw() for i in self.direct_methods) + \ + b''.join(i.get_raw() for i in self.virtual_methods) return buff def get_length(self): - length = len(writeuleb128( self.static_fields_size )) + \ - len(writeuleb128( self.instance_fields_size )) + \ - len(writeuleb128( self.direct_methods_size )) + \ - len(writeuleb128( self.virtual_methods_size )) + length = len(writeuleb128(self.static_fields_size)) + \ + len(writeuleb128(self.instance_fields_size)) + \ + len(writeuleb128(self.direct_methods_size)) + \ + len(writeuleb128(self.virtual_methods_size)) for i in self.static_fields: length += i.get_size() @@ -3467,7 +3462,6 @@ class ClassDefItem(object): self.class_data_item.set_static_fields( self.static_values.get_value()) - def __str__(self): return "%s->%s" % (self.get_superclassname(), self.get_name()) @@ -3691,14 +3685,14 @@ class ClassDefItem(object): self.static_values_off = self.CM.get_obj_by_offset( self.static_values_off).get_off() - return pack("=I", self.class_idx) + \ - pack("=I", self.access_flags) + \ - pack("=I", self.superclass_idx) + \ - pack("=I", self.interfaces_off) + \ - pack("=I", self.source_file_idx) + \ - pack("=I", self.annotations_off) + \ - pack("=I", self.class_data_off) + \ - pack("=I", self.static_values_off) + return pack("=I", self.class_idx) + \ + pack("=I", self.access_flags) + \ + pack("=I", self.superclass_idx) + \ + pack("=I", self.interfaces_off) + \ + pack("=I", self.source_file_idx) + \ + pack("=I", self.annotations_off) + \ + pack("=I", self.class_data_off) + \ + pack("=I", self.static_values_off) def get_raw(self): return self.get_obj() @@ -3889,7 +3883,7 @@ class EncodedCatchHandler(object): def get_raw(self): buff = writesleb128(self.size) + b''.join(i.get_raw() - for i in self.handlers) + for i in self.handlers) if self.size <= 0: buff += writeuleb128(self.catch_all_addr) @@ -4152,7 +4146,7 @@ class Instruction(object): def get_hex(self): s = binascii.hexlify(self.get_raw()).decode("ascii") - return " ".join(s[i:i+2] for i in range(0, len(s), 2)) + return " ".join(s[i:i + 2] for i in range(0, len(s), 2)) class InstructionInvalid(Instruction): @@ -4166,7 +4160,7 @@ class InstructionInvalid(Instruction): i16 = unpack("=H", buff[0:2])[0] self.OP = i16 & 0xff - #debug("OP:%x" % (self.OP)) + # debug("OP:%x" % (self.OP)) def get_name(self): """ @@ -4209,7 +4203,7 @@ class FillArrayData(object): buf_len += 1 self.data = buff[self.format_general_size:self.format_general_size + - buf_len] + buf_len] def add_note(self, msg): """ @@ -4306,7 +4300,8 @@ class FillArrayData(object): def get_hex(self): s = binascii.hexlify(self.get_raw()) - return " ".join(s[i:i+2] for i in range(0, len(s), 2)) + return " ".join(s[i:i + 2] for i in range(0, len(s), 2)) + class SparseSwitch(object): """ @@ -4429,11 +4424,12 @@ class SparseSwitch(object): def get_raw(self): return pack("=H", self.ident) + pack("=H", self.size) + b''.join(pack( "=l", i) for i in self.keys) + b''.join(pack("=l", i) - for i in self.targets) + for i in self.targets) def get_hex(self): s = binascii.hexlify(self.get_raw()) - return " ".join(s[i:i+2] for i in range(0, len(s), 2)) + return " ".join(s[i:i + 2] for i in range(0, len(s), 2)) + class PackedSwitch(object): """ @@ -4564,7 +4560,8 @@ class PackedSwitch(object): def get_hex(self): s = binascii.hexlify(self.get_raw()) - return " ".join(s[i:i+2] for i in range(0, len(s), 2)) + return " ".join(s[i:i + 2] for i in range(0, len(s), 2)) + class Instruction35c(Instruction): """ @@ -4627,12 +4624,12 @@ class Instruction35c(Instruction): elif self.A == 4: l.extend([(OPERAND_REGISTER, self.C), (OPERAND_REGISTER, self.D), ( OPERAND_REGISTER, self.E), (OPERAND_REGISTER, self.F), ( - self.get_kind() + OPERAND_KIND, self.BBBB, kind)]) + self.get_kind() + OPERAND_KIND, self.BBBB, kind)]) elif self.A == 5: l.extend([(OPERAND_REGISTER, self.C), (OPERAND_REGISTER, self.D), ( OPERAND_REGISTER, self.E), (OPERAND_REGISTER, self.F), ( - OPERAND_REGISTER, self.G), (self.get_kind() + OPERAND_KIND, - self.BBBB, kind)]) + OPERAND_REGISTER, self.G), (self.get_kind() + OPERAND_KIND, + self.BBBB, kind)]) return l @@ -4685,7 +4682,7 @@ class Instruction21h(Instruction): self.BBBB = unpack("=h", buff[2:4])[0] - #log_andro.debug("OP:%x %s AA:%x BBBBB:%x" % (self.OP, args[0], self.AA, self.BBBB)) + # log_andro.debug("OP:%x %s AA:%x BBBBB:%x" % (self.OP, args[0], self.AA, self.BBBB)) self.formatted_operands = [] @@ -4734,7 +4731,7 @@ class Instruction11n(Instruction): self.A = (i16 >> 8) & 0xf self.B = (i16 >> 12) - #log_andro.debug("OP:%x %s A:%x B:%x" % (self.OP, args[0], self.A, self.B)) + # log_andro.debug("OP:%x %s A:%x B:%x" % (self.OP, args[0], self.A, self.B)) def get_output(self, idx=-1): buff = "" @@ -4768,7 +4765,7 @@ class Instruction21c(Instruction): self.AA = (i16 >> 8) & 0xff self.BBBB = unpack("=H", buff[2:4])[0] - #log_andro.debug("OP:%x %s AA:%x BBBBB:%x" % (self.OP, args[0], self.AA, self.BBBB)) + # log_andro.debug("OP:%x %s AA:%x BBBBB:%x" % (self.OP, args[0], self.AA, self.BBBB)) def get_length(self): return 4 @@ -4816,9 +4813,9 @@ class Instruction21s(Instruction): if self.OP == 0x16: self.formatted_operands.append(unpack('=d', pack('=d', self.BBBB))[0 - ]) + ]) - #log_andro.debug("OP:%x %s AA:%x BBBBB:%x" % (self.OP, args[0], self.AA, self.BBBB)) + # log_andro.debug("OP:%x %s AA:%x BBBBB:%x" % (self.OP, args[0], self.AA, self.BBBB)) def get_length(self): return 4 @@ -4860,7 +4857,7 @@ class Instruction22c(Instruction): self.B = (i16 >> 12) & 0xf self.CCCC = unpack("=H", buff[2:4])[0] - #log_andro.debug("OP:%x %s A:%x B:%x CCCC:%x" % (self.OP, args[0], self.A, self.B, self.CCCC)) + # log_andro.debug("OP:%x %s A:%x B:%x CCCC:%x" % (self.OP, args[0], self.A, self.B, self.CCCC)) def get_length(self): return 4 @@ -4899,7 +4896,7 @@ class Instruction22cs(Instruction): self.B = (i16 >> 12) & 0xf self.CCCC = unpack("=H", buff[2:4])[0] - #log_andro.debug("OP:%x %s A:%x B:%x CCCC:%x" % (self.OP, args[0], self.A, self.B, self.CCCC)) + # log_andro.debug("OP:%x %s A:%x B:%x CCCC:%x" % (self.OP, args[0], self.A, self.B, self.CCCC)) def get_length(self): return 4 @@ -4935,7 +4932,7 @@ class Instruction31t(Instruction): self.AA = (i16 >> 8) & 0xff self.BBBBBBBB = unpack("=i", buff[2:6])[0] - #log_andro.debug("OP:%x %s AA:%x BBBBBBBBB:%x" % (self.OP, args[0], self.AA, self.BBBBBBBB)) + # log_andro.debug("OP:%x %s AA:%x BBBBBBBBB:%x" % (self.OP, args[0], self.AA, self.BBBBBBBB)) def get_length(self): return 6 @@ -4971,7 +4968,7 @@ class Instruction31c(Instruction): self.AA = (i16 >> 8) & 0xff self.BBBBBBBB = unpack("=I", buff[2:6])[0] - #log_andro.debug("OP:%x %s AA:%x BBBBBBBBB:%x" % (self.OP, args[0], self.AA, self.BBBBBBBB)) + # log_andro.debug("OP:%x %s AA:%x BBBBBBBBB:%x" % (self.OP, args[0], self.AA, self.BBBBBBBB)) def get_length(self): return 6 @@ -5019,7 +5016,7 @@ class Instruction12x(Instruction): self.A = (i16 >> 8) & 0xf self.B = (i16 >> 12) & 0xf - #log_andro.debug("OP:%x %s A:%x B:%x" % (self.OP, args[0], self.A, self.B)) + # log_andro.debug("OP:%x %s A:%x B:%x" % (self.OP, args[0], self.A, self.B)) def get_length(self): return 2 @@ -5048,7 +5045,7 @@ class Instruction11x(Instruction): self.OP = i16 & 0xff self.AA = (i16 >> 8) & 0xff - #log_andro.debug("OP:%x %s AA:%x" % (self.OP, args[0], self.AA)) + # log_andro.debug("OP:%x %s AA:%x" % (self.OP, args[0], self.AA)) def get_length(self): return 2 @@ -5085,7 +5082,7 @@ class Instruction51l(Instruction): self.formatted_operands.append(unpack('=d', pack( '=q', self.BBBBBBBBBBBBBBBB))[0]) - #log_andro.debug("OP:%x %s AA:%x BBBBBBBBBBBBBBBB:%x" % (self.OP, args[0], self.AA, self.BBBBBBBBBBBBBBBB)) + # log_andro.debug("OP:%x %s AA:%x BBBBBBBBBBBBBBBB:%x" % (self.OP, args[0], self.AA, self.BBBBBBBBBBBBBBBB)) def get_length(self): return 10 @@ -5138,7 +5135,7 @@ class Instruction31i(Instruction): self.formatted_operands.append(unpack('=d', pack('=d', self.BBBBBBBB))[0]) - #log_andro.debug("OP:%x %s AA:%x BBBBBBBBB:%x" % (self.OP, args[0], self.AA, self.BBBBBBBB)) + # log_andro.debug("OP:%x %s AA:%x BBBBBBBBB:%x" % (self.OP, args[0], self.AA, self.BBBBBBBB)) def get_length(self): return 6 @@ -5179,7 +5176,7 @@ class Instruction22x(Instruction): self.BBBB = unpack("=H", buff[2:4])[0] - #log_andro.debug("OP:%x %s AA:%x BBBBB:%x" % (self.OP, args[0], self.AA, self.BBBB)) + # log_andro.debug("OP:%x %s AA:%x BBBBB:%x" % (self.OP, args[0], self.AA, self.BBBB)) def get_length(self): return 4 @@ -5212,7 +5209,7 @@ class Instruction23x(Instruction): self.BB = i16 & 0xff self.CC = (i16 >> 8) & 0xff - #log_andro.debug("OP:%x %s AA:%x BB:%x CC:%x" % (self.OP, args[0], self.AA, self.BB, self.CC)) + # log_andro.debug("OP:%x %s AA:%x BB:%x CC:%x" % (self.OP, args[0], self.AA, self.BB, self.CC)) def get_length(self): return 4 @@ -5242,7 +5239,7 @@ class Instruction20t(Instruction): self.OP = i16 & 0xff self.AAAA = unpack("=h", buff[2:4])[0] - #log_andro.debug("OP:%x %s AAAA:%x" % (self.OP, args[0], self.AAAA)) + # log_andro.debug("OP:%x %s AAAA:%x" % (self.OP, args[0], self.AAAA)) def get_length(self): return 4 @@ -5276,7 +5273,7 @@ class Instruction21t(Instruction): self.BBBB = unpack("=h", buff[2:4])[0] - #log_andro.debug("OP:%x %s AA:%x BBBBB:%x" % (self.OP, args[0], self.AA, self.BBBB)) + # log_andro.debug("OP:%x %s AA:%x BBBBB:%x" % (self.OP, args[0], self.AA, self.BBBB)) def get_length(self): return 4 @@ -5307,7 +5304,7 @@ class Instruction10t(Instruction): self.OP = unpack("=B", buff[0:1])[0] self.AA = unpack("=b", buff[1:2])[0] - #log_andro.debug("OP:%x %s AA:%x" % (self.OP, args[0], self.AA)) + # log_andro.debug("OP:%x %s AA:%x" % (self.OP, args[0], self.AA)) def get_length(self): return 2 @@ -5341,7 +5338,7 @@ class Instruction22t(Instruction): self.B = (i16 >> 12) & 0xf self.CCCC = unpack("=h", buff[2:4])[0] - #log_andro.debug("OP:%x %s A:%x B:%x CCCC:%x" % (self.OP, args[0], self.A, self.B, self.CCCC)) + # log_andro.debug("OP:%x %s A:%x B:%x CCCC:%x" % (self.OP, args[0], self.A, self.B, self.CCCC)) def get_length(self): return 4 @@ -5376,7 +5373,7 @@ class Instruction22s(Instruction): self.B = (i16 >> 12) & 0xf self.CCCC = unpack("=h", buff[2:4])[0] - #log_andro.debug("OP:%x %s A:%x B:%x CCCC:%x" % (self.OP, args[0], self.A, self.B, self.CCCC)) + # log_andro.debug("OP:%x %s A:%x B:%x CCCC:%x" % (self.OP, args[0], self.A, self.B, self.CCCC)) def get_length(self): return 4 @@ -5412,7 +5409,7 @@ class Instruction22b(Instruction): self.BB = unpack("=B", buff[2:3])[0] self.CC = unpack("=b", buff[3:4])[0] - #log_andro.debug("OP:%x %s AA:%x BB:%x CC:%x" % (self.OP, args[0], self.AA, self.BB, self.CC)) + # log_andro.debug("OP:%x %s AA:%x BB:%x CC:%x" % (self.OP, args[0], self.AA, self.BB, self.CC)) def get_length(self): return 4 @@ -5446,7 +5443,7 @@ class Instruction30t(Instruction): self.AAAAAAAA = unpack("=i", buff[2:6])[0] - #log_andro.debug("OP:%x %s AAAAAAAA:%x" % (self.OP, args[0], self.AAAAAAAA)) + # log_andro.debug("OP:%x %s AAAAAAAA:%x" % (self.OP, args[0], self.AAAAAAAA)) def get_length(self): return 6 @@ -5484,7 +5481,7 @@ class Instruction3rc(Instruction): self.NNNN = self.CCCC + self.AA - 1 - #log_andro.debug("OP:%x %s AA:%x BBBB:%x CCCC:%x NNNN:%d" % (self.OP, args[0], self.AA, self.BBBB, self.CCCC, self.NNNN)) + # log_andro.debug("OP:%x %s AA:%x BBBB:%x CCCC:%x NNNN:%d" % (self.OP, args[0], self.AA, self.BBBB, self.CCCC, self.NNNN)) def get_length(self): return 6 @@ -5534,7 +5531,7 @@ class Instruction32x(Instruction): self.AAAA = unpack("=H", buff[2:4])[0] self.BBBB = unpack("=H", buff[4:6])[0] - #log_andro.debug("OP:%x %s AAAAA:%x BBBBB:%x" % (self.OP, args[0], self.AAAA, self.BBBB)) + # log_andro.debug("OP:%x %s AAAAA:%x BBBBB:%x" % (self.OP, args[0], self.AAAA, self.BBBB)) def get_length(self): return 6 @@ -5565,7 +5562,7 @@ class Instruction20bc(Instruction): self.BBBB = unpack("=H", buff[2:4])[0] - #log_andro.debug("OP:%x %s AA:%x BBBBB:%x" % (self.OP, args[0], self.AA, self.BBBB)) + # log_andro.debug("OP:%x %s AA:%x BBBBB:%x" % (self.OP, args[0], self.AA, self.BBBB)) def get_length(self): return 4 @@ -5603,7 +5600,7 @@ class Instruction35mi(Instruction): self.E = (i16 >> 8) & 0xf self.F = (i16 >> 12) & 0xf - #log_andro.debug("OP:%x %s G:%x A:%x BBBB:%x C:%x D:%x E:%x F:%x" % (self.OP, args[0], self.G, self.A, self.BBBB, self.C, self.D, self.E, self.F)) + # log_andro.debug("OP:%x %s G:%x A:%x BBBB:%x C:%x D:%x E:%x F:%x" % (self.OP, args[0], self.G, self.A, self.BBBB, self.C, self.D, self.E, self.F)) def get_output(self, idx=-1): buff = "" @@ -5642,12 +5639,12 @@ class Instruction35mi(Instruction): elif self.A == 4: l.extend([(OPERAND_REGISTER, self.C), (OPERAND_REGISTER, self.D), ( OPERAND_REGISTER, self.E), (OPERAND_REGISTER, self.F), ( - self.get_kind() + OPERAND_KIND, self.BBBB, kind)]) + self.get_kind() + OPERAND_KIND, self.BBBB, kind)]) elif self.A == 5: l.extend([(OPERAND_REGISTER, self.C), (OPERAND_REGISTER, self.D), ( OPERAND_REGISTER, self.E), (OPERAND_REGISTER, self.F), ( - OPERAND_REGISTER, self.G), (self.get_kind() + OPERAND_KIND, - self.BBBB, kind)]) + OPERAND_REGISTER, self.G), (self.get_kind() + OPERAND_KIND, + self.BBBB, kind)]) return l @@ -5683,7 +5680,7 @@ class Instruction35ms(Instruction): self.E = (i16 >> 8) & 0xf self.F = (i16 >> 12) & 0xf - #log_andro.debug("OP:%x %s G:%x A:%x BBBB:%x C:%x D:%x E:%x F:%x" % (self.OP, args[0], self.G, self.A, self.BBBB, self.C, self.D, self.E, self.F)) + # log_andro.debug("OP:%x %s G:%x A:%x BBBB:%x C:%x D:%x E:%x F:%x" % (self.OP, args[0], self.G, self.A, self.BBBB, self.C, self.D, self.E, self.F)) def get_output(self, idx=-1): buff = "" @@ -5722,12 +5719,12 @@ class Instruction35ms(Instruction): elif self.A == 4: l.extend([(OPERAND_REGISTER, self.C), (OPERAND_REGISTER, self.D), ( OPERAND_REGISTER, self.E), (OPERAND_REGISTER, self.F), ( - self.get_kind() + OPERAND_KIND, self.BBBB, kind)]) + self.get_kind() + OPERAND_KIND, self.BBBB, kind)]) elif self.A == 5: l.extend([(OPERAND_REGISTER, self.C), (OPERAND_REGISTER, self.D), ( OPERAND_REGISTER, self.E), (OPERAND_REGISTER, self.F), ( - OPERAND_REGISTER, self.G), (self.get_kind() + OPERAND_KIND, - self.BBBB, kind)]) + OPERAND_REGISTER, self.G), (self.get_kind() + OPERAND_KIND, + self.BBBB, kind)]) return l @@ -5760,7 +5757,7 @@ class Instruction3rmi(Instruction): self.NNNN = self.CCCC + self.AA - 1 - #log_andro.debug("OP:%x %s AA:%x BBBB:%x CCCC:%x NNNN:%d" % (self.OP, args[0], self.AA, self.BBBB, self.CCCC, self.NNNN)) + # log_andro.debug("OP:%x %s AA:%x BBBB:%x CCCC:%x NNNN:%d" % (self.OP, args[0], self.AA, self.BBBB, self.CCCC, self.NNNN)) def get_length(self): return 6 @@ -5815,7 +5812,7 @@ class Instruction3rms(Instruction): self.NNNN = self.CCCC + self.AA - 1 - #log_andro.debug("OP:%x %s AA:%x BBBB:%x CCCC:%x NNNN:%d" % (self.OP, args[0], self.AA, self.BBBB, self.CCCC, self.NNNN)) + # log_andro.debug("OP:%x %s AA:%x BBBB:%x CCCC:%x NNNN:%d" % (self.OP, args[0], self.AA, self.BBBB, self.CCCC, self.NNNN)) def get_length(self): return 6 @@ -5866,7 +5863,7 @@ class Instruction41c(Instruction): self.AAAA = unpack("=H", buff[6:8])[0] - #log_andro.debug("OP:%x %s AAAAA:%x BBBBB:%x" % (self.OP, args[0], self.AAAA, self.BBBBBBBB)) + # log_andro.debug("OP:%x %s AAAAA:%x BBBBB:%x" % (self.OP, args[0], self.AAAA, self.BBBBBBBB)) def get_length(self): return 8 @@ -5903,7 +5900,7 @@ class Instruction40sc(Instruction): self.BBBBBBBB = unpack("=I", buff[2:6])[0] self.AAAA = unpack("=H", buff[6:8])[0] - #log_andro.debug("OP:%x %s AAAAA:%x BBBBB:%x" % (self.OP, args[0], self.AAAA, self.BBBBBBBB)) + # log_andro.debug("OP:%x %s AAAAA:%x BBBBB:%x" % (self.OP, args[0], self.AAAA, self.BBBBBBBB)) def get_length(self): return 8 @@ -5941,7 +5938,7 @@ class Instruction52c(Instruction): self.AAAA = unpack("=H", buff[6:8])[0] self.BBBB = unpack("=H", buff[8:10])[0] - #log_andro.debug("OP:%x %s AAAAA:%x BBBBB:%x" % (self.OP, args[0], self.AAAA, self.BBBB)) + # log_andro.debug("OP:%x %s AAAAA:%x BBBBB:%x" % (self.OP, args[0], self.AAAA, self.BBBB)) def get_length(self): return 10 @@ -5981,7 +5978,7 @@ class Instruction5rc(Instruction): self.NNNN = self.CCCC + self.AAAA - 1 - #log_andro.debug("OP:%x %s AA:%x BBBB:%x CCCC:%x NNNN:%d" % (self.OP, args[0], self.AAAA, self.BBBBBBBB, self.CCCC, self.NNNN)) + # log_andro.debug("OP:%x %s AA:%x BBBB:%x CCCC:%x NNNN:%d" % (self.OP, args[0], self.AAAA, self.BBBBBBBB, self.CCCC, self.NNNN)) def get_length(self): return 10 @@ -6081,7 +6078,7 @@ DALVIK_OPCODES_FORMAT = { 0x3b: [Instruction21t, ["if-gez"]], 0x3c: [Instruction21t, ["if-gtz"]], 0x3d: [Instruction21t, ["if-lez"]], - #unused + # unused 0x3e: [Instruction10x, ["nop"]], 0x3f: [Instruction10x, ["nop"]], 0x40: [Instruction10x, ["nop"]], @@ -6288,7 +6285,7 @@ DALVIK_OPCODES_PAYLOAD = { INLINE_METHODS = [ ["Lorg/apache/harmony/dalvik/NativeTestTarget;", "emptyInlineMethod", "()V" - ], + ], ["Ljava/lang/String;", "charAt", "(I)C"], ["Ljava/lang/String;", "compareTo", "(Ljava/lang/String;)I"], ["Ljava/lang/String;", "equals", "(Ljava/lang/Object;)Z"], @@ -6373,7 +6370,6 @@ DALVIK_OPCODES_OPTIMIZED = { class Unresolved(Instruction): - def __init__(self, cm, data): self.cm = cm self.data = data @@ -6416,6 +6412,7 @@ def get_extented_instruction(cm, op_value, buff): except struct.error: raise InvalidInstruction("Invalid Instruction for 0x%x:%s" % (op_value, repr(buff))) + def get_optimized_instruction(cm, op_value, buff): try: return DALVIK_OPCODES_OPTIMIZED[op_value][0](cm, buff) @@ -6461,9 +6458,9 @@ class LinearSweepAlgorithm(object): op_value = insn[idx] - #print "%x %x" % (op_value, idx) + # print "%x %x" % (op_value, idx) - #payload instructions or extented/optimized instructions + # payload instructions or extented/optimized instructions if (op_value == 0x00 or op_value == 0xff) and ((idx + 2) < max_idx): op_value = unpack('=H', insn[idx:idx + 2])[0] @@ -6934,12 +6931,12 @@ class DalvikCode(object): def get_size(self): length = len(self.int_padding) - length += len( pack("=H", self.registers_size) + \ - pack("=H", self.ins_size) + \ - pack("=H", self.outs_size) + \ - pack("=H", self.tries_size) + \ - pack("=I", self.debug_info_off) + \ - pack("=I", self.insns_size) ) + length += len(pack("=H", self.registers_size) + \ + pack("=H", self.ins_size) + \ + pack("=H", self.outs_size) + \ + pack("=H", self.tries_size) + \ + pack("=I", self.debug_info_off) + \ + pack("=I", self.insns_size)) length += self.code.get_length() if (self.insns_size % 2 == 1): @@ -6961,7 +6958,6 @@ class DalvikCode(object): class CodeItem(object): - def __init__(self, size, buff, cm): self.CM = cm @@ -7016,7 +7012,6 @@ class CodeItem(object): class MapItem(object): - def __init__(self, buff, cm): self.CM = cm @@ -7109,11 +7104,11 @@ class MapItem(object): else: androconf.warning("Map item %d @ 0x%x(%d) is unknown" % - (self.type, buff.get_idx(), buff.get_idx())) + (self.type, buff.get_idx(), buff.get_idx())) diff = time.time() - started_at minutes, seconds = float(diff // 60), float(diff % 60) - androconf.debug("End of parsing %s = %s:%s" % (TYPE_MAP_ITEM[self.type], str(minutes), str(round(seconds,2)))) + androconf.debug("End of parsing %s = %s:%s" % (TYPE_MAP_ITEM[self.type], str(minutes), str(round(seconds, 2)))) def reload(self): if self.item != None: @@ -7156,7 +7151,6 @@ class MapItem(object): class OffObj(object): - def __init__(self, o): self.off = o @@ -7404,13 +7398,13 @@ class ClassManager(object): debug("success with regular name") except AttributeError: debug("WARNING: fail with regular name") - #python_export = False + # python_export = False try: name = bytecode.FormatNameToPython(encoded_method.get_name( ) + '_' + encoded_method.proto.replace(' ', '').replace( '(', '').replace('[', '').replace(')', '').replace( - '/', '_').replace(';', '')) + '/', '_').replace(';', '')) except AttributeError: name += "_" + bytecode.FormatDescriptorToPython( encoded_method.get_descriptor()) @@ -7509,7 +7503,8 @@ class MapList(object): i.reload() diff = time.time() - started_at minutes, seconds = float(diff // 60), float(diff % 60) - androconf.debug("End of reloading %s = %s:%s" % (TYPE_MAP_ITEM[i.get_type()], str(minutes), str(round(seconds,2)))) + androconf.debug( + "End of reloading %s = %s:%s" % (TYPE_MAP_ITEM[i.get_type()], str(minutes), str(round(seconds, 2)))) def reload(self): pass @@ -7549,7 +7544,7 @@ class MapList(object): def get_raw(self): return pack("=I", self.size) + b''.join(x.get_raw() - for x in self.map_item) + for x in self.map_item) def get_class_manager(self): return self.CM @@ -7559,7 +7554,6 @@ class MapList(object): class XREF(object): - def __init__(self): self.items = [] @@ -7568,7 +7562,6 @@ class XREF(object): class DREF(object): - def __init__(self): self.items = [] @@ -7590,16 +7583,16 @@ class DalvikVMFormat(bytecode._Bytecode): """ def __init__(self, buff, decompiler=None, config=None, using_api=None): - #to allow to pass apk object ==> we do not need to pass additionally target version + # to allow to pass apk object ==> we do not need to pass additionally target version if isinstance(buff, APK): self.api_version = buff.get_target_sdk_version() - buff = buff.get_dex() #getting dex from APK file + buff = buff.get_dex() # getting dex from APK file elif using_api: self.api_version = using_api else: self.api_version = CONF["DEFAULT_API"] - #TODO: can using_api be added to config parameter? + # TODO: can using_api be added to config parameter? super(DalvikVMFormat, self).__init__(buff) self.config = config @@ -7752,7 +7745,7 @@ class DalvikVMFormat(bytecode._Bytecode): s[idx + length] = c_length length += c_length - #debug("SAVE" + str(j) + " @ 0x%x" % (idx+length)) + # debug("SAVE" + str(j) + " @ 0x%x" % (idx+length)) debug("SAVE " + str(i[0]) + " @0x%x (%x)" % (idx, length)) @@ -7782,7 +7775,7 @@ class DalvikVMFormat(bytecode._Bytecode): last_idx = idx for j in i.get_obj(): j.set_off(last_idx) - #j.set_debug_info_off(0) + # j.set_debug_info_off(0) last_idx += j.get_size() last_idx = 0 @@ -8164,14 +8157,14 @@ class DalvikVMFormat(bytecode._Bytecode): for ref_class, ref_method, _ in xrefs_from: name = (bytecode.FormatNameToPython(ref_method.get_name()) + "_" + bytecode.FormatDescriptorToPython( - ref_method.get_descriptor())) + ref_method.get_descriptor())) setattr(method.XF, name, ref_method) xrefs_to = m_a.get_xref_to() for ref_class, ref_method, _ in xrefs_to: name = (bytecode.FormatNameToPython(ref_method.get_name()) + "_" + bytecode.FormatDescriptorToPython( - ref_method.get_descriptor())) + ref_method.get_descriptor())) setattr(method.XT, name, ref_method) for i in m: @@ -8201,14 +8194,14 @@ class DalvikVMFormat(bytecode._Bytecode): for ref_class, ref_method in xrefs_from: name = (bytecode.FormatNameToPython(ref_method.get_name()) + "_" + bytecode.FormatDescriptorToPython( - ref_method.get_descriptor())) + ref_method.get_descriptor())) setattr(field.XR, name, ref_method) xrefs_to = f_a.get_xref_write() for ref_class, ref_method in xrefs_to: name = (bytecode.FormatNameToPython(ref_method.get_name()) + "_" + bytecode.FormatDescriptorToPython( - ref_method.get_descriptor())) + ref_method.get_descriptor())) setattr(field.XW, name, ref_method) for i in f: @@ -8253,8 +8246,8 @@ class DalvikVMFormat(bytecode._Bytecode): :type size: """ for i in DCode( - self.CM, offset, size, - self.get_buff()[offset:offset + size]).get_instructions(): + self.CM, offset, size, + self.get_buff()[offset:offset + size]).get_instructions(): yield i def _get_class_hierarchy(self): @@ -8382,7 +8375,7 @@ class DalvikVMFormat(bytecode._Bytecode): elif operand[0] == OPERAND_OFFSET: yield "%s%d%s" % (colors["offset"], operand[1], colors["normal"] - ) + ) elif operand[0] & OPERAND_KIND: if operand[0] == (OPERAND_KIND + KIND_STRING): @@ -8478,13 +8471,13 @@ class OdexHeaderItem(object): self.deps_length, self.aux_offset, self.aux_length, self.flags)) def get_raw(self): - return pack("=I", self.dex_offset) + \ - pack("=I", self.dex_length) + \ - pack("=I", self.deps_offset) + \ - pack("=I", self.deps_length) + \ - pack("=I", self.aux_offset) + \ - pack("=I", self.aux_length) + \ - pack("=I", self.flags) + \ + return pack("=I", self.dex_offset) + \ + pack("=I", self.dex_length) + \ + pack("=I", self.deps_offset) + \ + pack("=I", self.deps_length) + \ + pack("=I", self.aux_offset) + \ + pack("=I", self.aux_length) + \ + pack("=I", self.flags) + \ pack("=I", self.padding) @@ -8526,9 +8519,9 @@ class OdexDependencies(object): pack("=20s", self.dependency_checksums[idx]) return pack("=I", self.modification_time) + \ - pack("=I", self.crc) + \ - pack("=I", self.dalvik_build) + \ - pack("=I", self.dependency_count) + \ + pack("=I", self.crc) + \ + pack("=I", self.dalvik_build) + \ + pack("=I", self.dependency_count) + \ dependencies @@ -8645,17 +8638,17 @@ def get_bytecodes_methodx(method, mx): if ins == instructions[-1] and i.childs != []: # packed/sparse-switch if (op_value == 0x2b or op_value == 0x2c - ) and len(i.childs) > 1: + ) and len(i.childs) > 1: values = i.get_special_ins(idx).get_values() bb_buffer += "[ D:%s " % (i.childs[0][2].name) bb_buffer += ' '.join( "%d:%s" % (values[j], i.childs[j + 1][2].name) for j in range(0, len(i.childs) - 1)) + " ]" else: - #if len(i.childs) == 2: + # if len(i.childs) == 2: # i_buffer += "%s[ %s%s " % (branch_false_color, i.childs[0][2].name, branch_true_color)) # print_fct(' '.join("%s" % c[2].name for c in i.childs[1:]) + " ]%s" % normal_color) - #else: + # else: bb_buffer += "[ " + ' '.join("%s" % c[2].name for c in i.childs) + " ]" @@ -8677,28 +8670,28 @@ class ExportObject(object): class ConstString(Instruction21c): - """Simulate a const-string instruction.""" + """Simulate a const-string instruction.""" - def __init__(self, orig_ins, value): - self.OP = orig_ins.OP - self.AA = orig_ins.AA - self.BBBB = orig_ins.BBBB - self.cm = orig_ins.cm - self.value = value + def __init__(self, orig_ins, value): + self.OP = orig_ins.OP + self.AA = orig_ins.AA + self.BBBB = orig_ins.BBBB + self.cm = orig_ins.cm + self.value = value - def get_raw_string(self): - return self.value + def get_raw_string(self): + return self.value - def get_operands(self, idx=-1): - return [(0, 1), (257, 2113, "'%s'" % self.value)] + def get_operands(self, idx=-1): + return [(0, 1), (257, 2113, "'%s'" % self.value)] class FakeNop(Instruction10x): - """Simulate a nop instruction.""" + """Simulate a nop instruction.""" - def __init__(self, length): - self.OP = 0x00 - self.length = length + def __init__(self, length): + self.OP = 0x00 + self.length = length - def get_length(self): - return self.length + def get_length(self): + return self.length diff --git a/androguard/core/bytecodes/dvm_permissions.py b/androguard/core/bytecodes/dvm_permissions.py index 0ea54a53..dd46862d 100644 --- a/androguard/core/bytecodes/dvm_permissions.py +++ b/androguard/core/bytecodes/dvm_permissions.py @@ -2,322 +2,493 @@ DVM_PERMISSIONS = { "MANIFEST_PERMISSION": { - # MESSAGES - "SEND_SMS": ["dangerous", "send SMS messages", "Allows application to send SMS messages. Malicious applications may cost you money by sending messages without your confirmation."], - "SEND_SMS_NO_CONFIRMATION": ["signatureOrSystem", "send SMS messages", "send SMS messages via the Messaging app with no user input or confirmation"], - "RECEIVE_SMS": ["dangerous", "receive SMS", "Allows application to receive and process SMS messages. Malicious applications may monitor your messages or delete them without showing them to you."], - "RECEIVE_MMS": ["dangerous", "receive MMS", "Allows application to receive and process MMS messages. Malicious applications may monitor your messages or delete them without showing them to you."], - "RECEIVE_EMERGENCY_BROADCAST": [ "signatureOrSystem", "", "Allows an application to receive emergency cell broadcast messages, to record or display them to the user. Reserved for system apps." ], - "READ_CELL_BROADCASTS" : [ "dangerous", "received cell broadcast messages", "Allows an application to read previously received cell broadcast "\ - "messages and to register a content observer to get notifications when "\ - "a cell broadcast has been received and added to the database. For "\ - "emergency alerts, the database is updated immediately after the "\ - "alert dialog and notification sound/vibration/speech are presented."\ - "The \"read\" column is then updated after the user dismisses the alert."\ - "This enables supplementary emergency assistance apps to start loading "\ - "additional emergency information (if Internet access is available) "\ - "when the alert is first received, and to delay presenting the info "\ - "to the user until after the initial alert dialog is dismissed." ], - "READ_SMS" : [ "dangerous" , "read SMS or MMS" , "Allows application to read SMS messages stored on your phone or SIM card. Malicious applications may read your confidential messages." ], - "WRITE_SMS" : [ "dangerous" , "edit SMS or MMS" , "Allows application to write to SMS messages stored on your phone or SIM card. Malicious applications may delete your messages." ], - "RECEIVE_WAP_PUSH" : [ "dangerous" , "receive WAP" , "Allows application to receive and process WAP messages. Malicious applications may monitor your messages or delete them without showing them to you." ], - "BROADCAST_SMS" : [ "signature" , "send SMS-received broadcast" , "Allows an application to broadcast a notification that an SMS message has been received. Malicious applications may use this to forge incoming SMS messages." ], - "BROADCAST_WAP_PUSH" : [ "signature" , "send WAP-PUSH-received broadcast" , "Allows an application to broadcast a notification that a WAP-PUSH message has been received. Malicious applications may use this to forge MMS message receipt or to replace the content of any web page silently with malicious variants." ], + # MESSAGES + "SEND_SMS": ["dangerous", "send SMS messages", + "Allows application to send SMS messages. Malicious applications may cost you money by sending messages without your confirmation."], + "SEND_SMS_NO_CONFIRMATION": ["signatureOrSystem", "send SMS messages", + "send SMS messages via the Messaging app with no user input or confirmation"], + "RECEIVE_SMS": ["dangerous", "receive SMS", + "Allows application to receive and process SMS messages. Malicious applications may monitor your messages or delete them without showing them to you."], + "RECEIVE_MMS": ["dangerous", "receive MMS", + "Allows application to receive and process MMS messages. Malicious applications may monitor your messages or delete them without showing them to you."], + "RECEIVE_EMERGENCY_BROADCAST": ["signatureOrSystem", "", + "Allows an application to receive emergency cell broadcast messages, to record or display them to the user. Reserved for system apps."], + "READ_CELL_BROADCASTS": ["dangerous", "received cell broadcast messages", + "Allows an application to read previously received cell broadcast " \ + "messages and to register a content observer to get notifications when " \ + "a cell broadcast has been received and added to the database. For " \ + "emergency alerts, the database is updated immediately after the " \ + "alert dialog and notification sound/vibration/speech are presented." \ + "The \"read\" column is then updated after the user dismisses the alert." \ + "This enables supplementary emergency assistance apps to start loading " \ + "additional emergency information (if Internet access is available) " \ + "when the alert is first received, and to delay presenting the info " \ + "to the user until after the initial alert dialog is dismissed."], + "READ_SMS": ["dangerous", "read SMS or MMS", + "Allows application to read SMS messages stored on your phone or SIM card. Malicious applications may read your confidential messages."], + "WRITE_SMS": ["dangerous", "edit SMS or MMS", + "Allows application to write to SMS messages stored on your phone or SIM card. Malicious applications may delete your messages."], + "RECEIVE_WAP_PUSH": ["dangerous", "receive WAP", + "Allows application to receive and process WAP messages. Malicious applications may monitor your messages or delete them without showing them to you."], + "BROADCAST_SMS": ["signature", "send SMS-received broadcast", + "Allows an application to broadcast a notification that an SMS message has been received. Malicious applications may use this to forge incoming SMS messages."], + "BROADCAST_WAP_PUSH": ["signature", "send WAP-PUSH-received broadcast", + "Allows an application to broadcast a notification that a WAP-PUSH message has been received. Malicious applications may use this to forge MMS message receipt or to replace the content of any web page silently with malicious variants."], - # SOCIAL_INFO - "READ_CONTACTS" : [ "dangerous" , "read contact data" , "Allows an application to read all of the contact (address) data stored on your phone. Malicious applications can use this to send your data to other people." ], - "WRITE_CONTACTS" : [ "dangerous" , "write contact data" , "Allows an application to modify the contact (address) data stored on your phone. Malicious applications can use this to erase or modify your contact data." ], - "BIND_DIRECTORY_SEARCH" : [ "signatureOrSystem", "execute contacts directory search", "Allows an application to execute contacts directory search. This should only be used by ContactsProvider." ], - "READ_CALL_LOG": [ "dangerous", "read the user's call log.", "Allows an application to read the user's call log." ], - "WRITE_CALL_LOG": [ "dangerous", "write (but not read) the user's contacts data.", "Allows an application to write (but not read) the user's contacts data." ], - "READ_SOCIAL_STREAM" : [ "dangerous", "read from the user's social stream", "Allows an application to read from the user's social stream." ], - "WRITE_SOCIAL_STREAM" : [ "dangerous", "write the user's social stream", "Allows an application to write (but not read) the user's social stream data." ], + # SOCIAL_INFO + "READ_CONTACTS": ["dangerous", "read contact data", + "Allows an application to read all of the contact (address) data stored on your phone. Malicious applications can use this to send your data to other people."], + "WRITE_CONTACTS": ["dangerous", "write contact data", + "Allows an application to modify the contact (address) data stored on your phone. Malicious applications can use this to erase or modify your contact data."], + "BIND_DIRECTORY_SEARCH": ["signatureOrSystem", "execute contacts directory search", + "Allows an application to execute contacts directory search. This should only be used by ContactsProvider."], + "READ_CALL_LOG": ["dangerous", "read the user's call log.", + "Allows an application to read the user's call log."], + "WRITE_CALL_LOG": ["dangerous", "write (but not read) the user's contacts data.", + "Allows an application to write (but not read) the user's contacts data."], + "READ_SOCIAL_STREAM": ["dangerous", "read from the user's social stream", + "Allows an application to read from the user's social stream."], + "WRITE_SOCIAL_STREAM": ["dangerous", "write the user's social stream", + "Allows an application to write (but not read) the user's social stream data."], - # PERSONAL_INFO - "READ_PROFILE" : [ "dangerous", "read the user's personal profile data", "Allows an application to read the user's personal profile data."], - "WRITE_PROFILE" : [ "dangerous", "write the user's personal profile data", "Allows an application to write (but not read) the user's personal profile data."], - "RETRIEVE_WINDOW_CONTENT": [ "signatureOrSystem", "", "Allows an application to retrieve the content of the active window An active window is the window that has fired an accessibility event. " ], - "BIND_APPWIDGET" : [ "signatureOrSystem" , "choose widgets" , "Allows the application to tell the system which widgets can be used by which application. With this permission, applications can give access to personal data to other applications. Not for use by normal applications." ], - "BIND_KEYGUARD_APPWIDGET" : [ "signatureOrSystem", "", "Private permission, to restrict who can bring up a dialog to add a new keyguard widget" ], + # PERSONAL_INFO + "READ_PROFILE": ["dangerous", "read the user's personal profile data", + "Allows an application to read the user's personal profile data."], + "WRITE_PROFILE": ["dangerous", "write the user's personal profile data", + "Allows an application to write (but not read) the user's personal profile data."], + "RETRIEVE_WINDOW_CONTENT": ["signatureOrSystem", "", + "Allows an application to retrieve the content of the active window An active window is the window that has fired an accessibility event. "], + "BIND_APPWIDGET": ["signatureOrSystem", "choose widgets", + "Allows the application to tell the system which widgets can be used by which application. With this permission, applications can give access to personal data to other applications. Not for use by normal applications."], + "BIND_KEYGUARD_APPWIDGET": ["signatureOrSystem", "", + "Private permission, to restrict who can bring up a dialog to add a new keyguard widget"], - # CALENDAR - "READ_CALENDAR" : [ "dangerous" , "read calendar events" , "Allows an application to read all of the calendar events stored on your phone. Malicious applications can use this to send your calendar events to other people." ], - "WRITE_CALENDAR": [ "dangerous" , "add or modify calendar events and send emails to guests" , "Allows an application to add or change the events on your calendar, which may send emails to guests. Malicious applications can use this to erase or modify your calendar events or to send emails to guests." ], + # CALENDAR + "READ_CALENDAR": ["dangerous", "read calendar events", + "Allows an application to read all of the calendar events stored on your phone. Malicious applications can use this to send your calendar events to other people."], + "WRITE_CALENDAR": ["dangerous", "add or modify calendar events and send emails to guests", + "Allows an application to add or change the events on your calendar, which may send emails to guests. Malicious applications can use this to erase or modify your calendar events or to send emails to guests."], + # USER_DICTIONARY + "READ_USER_DICTIONARY": ["dangerous", "read user-defined dictionary", + "Allows an application to read any private words, names and phrases that the user may have stored in the user dictionary."], - # USER_DICTIONARY - "READ_USER_DICTIONARY" : [ "dangerous" , "read user-defined dictionary" , "Allows an application to read any private words, names and phrases that the user may have stored in the user dictionary." ], + # WRITE_USER_DICTIONARY + "WRITE_USER_DICTIONARY": ["normal", "write to user-defined dictionary", + "Allows an application to write new words into the user dictionary."], - # WRITE_USER_DICTIONARY - "WRITE_USER_DICTIONARY" : [ "normal" , "write to user-defined dictionary" , "Allows an application to write new words into the user dictionary." ], + # BOOKMARKS + "READ_HISTORY_BOOKMARKS": ["dangerous", "read Browser\'s history and bookmarks", + "Allows the application to read all the URLs that the browser has visited and all of the browser\'s bookmarks."], + "WRITE_HISTORY_BOOKMARKS": ["dangerous", "write Browser\'s history and bookmarks", + "Allows an application to modify the browser\'s history or bookmarks stored on your phone. Malicious applications can use this to erase or modify your browser\'s data."], - # BOOKMARKS - "READ_HISTORY_BOOKMARKS" : [ "dangerous" , "read Browser\'s history and bookmarks" , "Allows the application to read all the URLs that the browser has visited and all of the browser\'s bookmarks." ], - "WRITE_HISTORY_BOOKMARKS" : [ "dangerous" , "write Browser\'s history and bookmarks" , "Allows an application to modify the browser\'s history or bookmarks stored on your phone. Malicious applications can use this to erase or modify your browser\'s data." ], + # DEVICE_ALARMS + "SET_ALARM": ["normal", "set alarm in alarm clock", + "Allows the application to set an alarm in an installed alarm clock application. Some alarm clock applications may not implement this feature."], - # DEVICE_ALARMS - "SET_ALARM" : [ "normal" , "set alarm in alarm clock" , "Allows the application to set an alarm in an installed alarm clock application. Some alarm clock applications may not implement this feature." ], + # VOICEMAIL + "ADD_VOICEMAIL": ["dangerous", "add voicemails into the system", + "Allows an application to add voicemails into the system."], - # VOICEMAIL - "ADD_VOICEMAIL" : [ "dangerous", "add voicemails into the system", "Allows an application to add voicemails into the system." ], + # LOCATION + "ACCESS_FINE_LOCATION": ["dangerous", "fine (GPS) location", + "Access fine location sources, such as the Global Positioning System on the phone, where available. Malicious applications can use this to determine where you are and may consume additional battery power."], + "ACCESS_COARSE_LOCATION": ["dangerous", "coarse (network-based) location", + "Access coarse location sources, such as the mobile network database, to determine an approximate phone location, where available. Malicious applications can use this to determine approximately where you are."], + "ACCESS_MOCK_LOCATION": ["dangerous", "mock location sources for testing", + "Create mock location sources for testing. Malicious applications can use this to override the location and/or status returned by real-location sources such as GPS or Network providers."], + "ACCESS_LOCATION_EXTRA_COMMANDS": ["normal", "access extra location provider commands", + "Access extra location provider commands. Malicious applications could use this to interfere with the operation of the GPS or other location sources."], + "INSTALL_LOCATION_PROVIDER": ["signatureOrSystem", "permission to install a location provider", + "Create mock location sources for testing. Malicious applications can use this to override the location and/or status returned by real-location sources such as GPS or Network providers, or monitor and report your location to an external source."], - # LOCATION - "ACCESS_FINE_LOCATION" : [ "dangerous" , "fine (GPS) location" , "Access fine location sources, such as the Global Positioning System on the phone, where available. Malicious applications can use this to determine where you are and may consume additional battery power." ], - "ACCESS_COARSE_LOCATION" : [ "dangerous" , "coarse (network-based) location" , "Access coarse location sources, such as the mobile network database, to determine an approximate phone location, where available. Malicious applications can use this to determine approximately where you are." ], - "ACCESS_MOCK_LOCATION" : [ "dangerous" , "mock location sources for testing" , "Create mock location sources for testing. Malicious applications can use this to override the location and/or status returned by real-location sources such as GPS or Network providers." ], - "ACCESS_LOCATION_EXTRA_COMMANDS" : [ "normal" , "access extra location provider commands" , "Access extra location provider commands. Malicious applications could use this to interfere with the operation of the GPS or other location sources." ], - "INSTALL_LOCATION_PROVIDER" : [ "signatureOrSystem" , "permission to install a location provider" , "Create mock location sources for testing. Malicious applications can use this to override the location and/or status returned by real-location sources such as GPS or Network providers, or monitor and report your location to an external source." ], + # NETWORK + "INTERNET": ["dangerous", "full Internet access", "Allows an application to create network sockets."], + "ACCESS_NETWORK_STATE": ["normal", "view network status", + "Allows an application to view the status of all networks."], + "ACCESS_WIFI_STATE": ["normal", "view Wi-Fi status", + "Allows an application to view the information about the status of Wi-Fi."], + "CHANGE_WIFI_STATE": ["dangerous", "change Wi-Fi status", + "Allows an application to connect to and disconnect from Wi-Fi access points and to make changes to configured Wi-Fi networks."], + "CHANGE_NETWORK_STATE": ["normal", "change network connectivity", + "Allows an application to change the state of network connectivity."], + "ACCESS_WIMAX_STATE": ["normal", "", ""], + "CHANGE_WIMAX_STATE": ["dangerous", "", ""], + "NFC": ["dangerous", "control Near-Field Communication", + "Allows an application to communicate with Near-Field Communication (NFC) tags, cards and readers."], + "CONNECTIVITY_INTERNAL": ["signatureOrSystem", "use privileged ConnectivityManager API", + "Allows an internal user to use privileged ConnectivityManager API"], + "RECEIVE_DATA_ACTIVITY_CHANGE": ["signatureOrSystem", "", ""], + # BLUETOOTH_NETWORK + "BLUETOOTH": ["dangerous", "create Bluetooth connections", + "Allows an application to view configuration of the local Bluetooth phone and to make and accept connections with paired devices."], + "BLUETOOTH_ADMIN": ["dangerous", "bluetooth administration", + "Allows an application to configure the local Bluetooth phone and to discover and pair with remote devices."], - # NETWORK - "INTERNET" : [ "dangerous" , "full Internet access" , "Allows an application to create network sockets." ], - "ACCESS_NETWORK_STATE" : [ "normal" , "view network status" , "Allows an application to view the status of all networks." ], - "ACCESS_WIFI_STATE" : [ "normal" , "view Wi-Fi status" , "Allows an application to view the information about the status of Wi-Fi." ], - "CHANGE_WIFI_STATE" : [ "dangerous" , "change Wi-Fi status" , "Allows an application to connect to and disconnect from Wi-Fi access points and to make changes to configured Wi-Fi networks." ], - "CHANGE_NETWORK_STATE" : [ "normal" , "change network connectivity" , "Allows an application to change the state of network connectivity." ], - "ACCESS_WIMAX_STATE": [ "normal", "", "" ], - "CHANGE_WIMAX_STATE": [ "dangerous", "", "" ], - "NFC" : [ "dangerous" , "control Near-Field Communication" , "Allows an application to communicate with Near-Field Communication (NFC) tags, cards and readers." ], - "CONNECTIVITY_INTERNAL": [ "signatureOrSystem", "use privileged ConnectivityManager API", "Allows an internal user to use privileged ConnectivityManager API" ], - "RECEIVE_DATA_ACTIVITY_CHANGE": [ "signatureOrSystem", "", "" ], - - - # BLUETOOTH_NETWORK - "BLUETOOTH" : [ "dangerous" , "create Bluetooth connections" , "Allows an application to view configuration of the local Bluetooth phone and to make and accept connections with paired devices." ], - "BLUETOOTH_ADMIN" : [ "dangerous" , "bluetooth administration" , "Allows an application to configure the local Bluetooth phone and to discover and pair with remote devices." ], - - - # SYSTEM TOOLS - "BLUETOOTH_STACK": [ "signature", "", "" ], - "NET_ADMIN": [ "signature", "configure network interfaces, configure/use IPSec, etc", "Allows access to configure network interfaces, configure/use IPSec, etc." ], - "REMOTE_AUDIO_PLAYBACK": [ "signature", "remote audio playback", "Allows registration for remote audio playback" ], - "READ_EXTERNAL_STORAGE" : [ "normal", "read from external storage", "Allows an application to read from external storage" ], - "INTERACT_ACROSS_USERS": [ "signatureOrSystemOrDevelopment", "", "Allows an application to call APIs that allow it to do interactions across the users on the device, using singleton services and user-targeted broadcasts. This permission is not available to third party applications." ], - "INTERACT_ACROSS_USERS_FULL": [ "signature", "", "Fuller form of INTERACT_ACROSS_USERS that removes restrictions on where broadcasts can be sent and allows other types of interactions." ], - "MANAGE_USERS": [ "signatureOrSystem", "", "Allows an application to call APIs that allow it to query and manage users on the device. This permission is not available to third party applications." ], - "GET_DETAILED_TASKS": [ "signature", "", "Allows an application to get full detailed information about recently running tasks, with full fidelity to the real state." ], - "START_ANY_ACTIVITY": [ "signature", "", "Allows an application to start any activity, regardless of permission protection or exported state." ], - "SET_SCREEN_COMPATIBILITY": [ "signature", "", "Change the screen compatibility mode of applications" ], - "CHANGE_CONFIGURATION" : [ "signatureOrSystemOrDevelopment" , "change your UI settings" , "Allows an application to change the current configuration, such as the locale or overall font size." ], - "FORCE_STOP_PACKAGES" : [ "signature" , "force-stop other applications" , "Allows an application to stop other applications forcibly." ], - "SET_ANIMATION_SCALE" : [ "signatureOrSystemOrDevelopment" , "modify global animation speed" , "Allows an application to change the global animation speed (faster or slower animations) at any time." ], - "GET_PACKAGE_SIZE" : [ "normal" , "measure application storage space" , "Allows an application to retrieve its code, data and cache sizes" ], - "SET_PREFERRED_APPLICATIONS" : [ "signature" , "set preferred applications" , "Allows an application to modify your preferred applications. This can allow malicious applications to silently change the applications that are run, spoofing your existing applications to collect private data from you." ], - "BROADCAST_STICKY" : [ "normal" , "send sticky broadcast" , "Allows an application to send sticky broadcasts, which remain after the broadcast ends. Malicious applications can make the phone slow or unstable by causing it to use too much memory." ], - "MOUNT_UNMOUNT_FILESYSTEMS" : [ "signatureOrSystem" , "mount and unmount file systems" , "Allows the application to mount and unmount file systems for removable storage." ], - "MOUNT_FORMAT_FILESYSTEMS" : [ "signatureOrSystem" , "format external storage" , "Allows the application to format removable storage." ], - "ASEC_ACCESS" : [ "signature" , "get information on internal storage" , "Allows the application to get information on internal storage." ], - "ASEC_CREATE" : [ "signature" , "create internal storage" , "Allows the application to create internal storage." ], - "ASEC_DESTROY" : [ "signature" , "destroy internal storage" , "Allows the application to destroy internal storage." ], - "ASEC_MOUNT_UNMOUNT" : [ "signature" , "mount/unmount internal storage" , "Allows the application to mount/unmount internal storage." ], - "ASEC_RENAME" : [ "signature" , "rename internal storage" , "Allows the application to rename internal storage." ], - "WRITE_APN_SETTINGS" : [ "signatureOrSystem" , "write Access Point Name settings" , "Allows an application to modify the APN settings, such as Proxy and Port of any APN." ], - "SUBSCRIBED_FEEDS_READ" : [ "normal" , "read subscribed feeds" , "Allows an application to receive details about the currently synced feeds." ], - "SUBSCRIBED_FEEDS_WRITE" : [ "dangerous" , "write subscribed feeds" , "Allows an application to modify your currently synced feeds. This could allow a malicious application to change your synced feeds." ], - "CLEAR_APP_CACHE" : [ "dangerous" , "delete all application cache data" , "Allows an application to free phone storage by deleting files in application cache directory. Access is usually very restricted to system process." ], - "DIAGNOSTIC" : [ "signature" , "read/write to resources owned by diag" , "Allows an application to read and write to any resource owned by the diag group; for example, files in /dev. This could potentially affect system stability and security. This should ONLY be used for hardware-specific diagnostics by the manufacturer or operator." ], - "BROADCAST_PACKAGE_REMOVED" : [ "signature" , "send package removed broadcast" , "Allows an application to broadcast a notification that an application package has been removed. Malicious applications may use this to kill any other application running." ], - "BATTERY_STATS" : [ "dangerous" , "modify battery statistics" , "Allows the modification of collected battery statistics. Not for use by normal applications." ], - "MODIFY_APPWIDGET_BIND_PERMISSIONS" : [ "signatureOrSystem", "query/set which applications can bind AppWidgets.", "Internal permission allowing an application to query/set which applications can bind AppWidgets." ], - "CHANGE_BACKGROUND_DATA_SETTING" : [ "signature" , "change background data usage setting" , "Allows an application to change the background data usage setting." ], - "GLOBAL_SEARCH" : [ "signatureOrSystem" , "" , "This permission can be used on content providers to allow the global search " \ - "system to access their data. Typically it used when the provider has some " \ + # SYSTEM TOOLS + "BLUETOOTH_STACK": ["signature", "", ""], + "NET_ADMIN": ["signature", "configure network interfaces, configure/use IPSec, etc", + "Allows access to configure network interfaces, configure/use IPSec, etc."], + "REMOTE_AUDIO_PLAYBACK": ["signature", "remote audio playback", + "Allows registration for remote audio playback"], + "READ_EXTERNAL_STORAGE": ["normal", "read from external storage", + "Allows an application to read from external storage"], + "INTERACT_ACROSS_USERS": ["signatureOrSystemOrDevelopment", "", + "Allows an application to call APIs that allow it to do interactions across the users on the device, using singleton services and user-targeted broadcasts. This permission is not available to third party applications."], + "INTERACT_ACROSS_USERS_FULL": ["signature", "", + "Fuller form of INTERACT_ACROSS_USERS that removes restrictions on where broadcasts can be sent and allows other types of interactions."], + "MANAGE_USERS": ["signatureOrSystem", "", + "Allows an application to call APIs that allow it to query and manage users on the device. This permission is not available to third party applications."], + "GET_DETAILED_TASKS": ["signature", "", + "Allows an application to get full detailed information about recently running tasks, with full fidelity to the real state."], + "START_ANY_ACTIVITY": ["signature", "", + "Allows an application to start any activity, regardless of permission protection or exported state."], + "SET_SCREEN_COMPATIBILITY": ["signature", "", "Change the screen compatibility mode of applications"], + "CHANGE_CONFIGURATION": ["signatureOrSystemOrDevelopment", "change your UI settings", + "Allows an application to change the current configuration, such as the locale or overall font size."], + "FORCE_STOP_PACKAGES": ["signature", "force-stop other applications", + "Allows an application to stop other applications forcibly."], + "SET_ANIMATION_SCALE": ["signatureOrSystemOrDevelopment", "modify global animation speed", + "Allows an application to change the global animation speed (faster or slower animations) at any time."], + "GET_PACKAGE_SIZE": ["normal", "measure application storage space", + "Allows an application to retrieve its code, data and cache sizes"], + "SET_PREFERRED_APPLICATIONS": ["signature", "set preferred applications", + "Allows an application to modify your preferred applications. This can allow malicious applications to silently change the applications that are run, spoofing your existing applications to collect private data from you."], + "BROADCAST_STICKY": ["normal", "send sticky broadcast", + "Allows an application to send sticky broadcasts, which remain after the broadcast ends. Malicious applications can make the phone slow or unstable by causing it to use too much memory."], + "MOUNT_UNMOUNT_FILESYSTEMS": ["signatureOrSystem", "mount and unmount file systems", + "Allows the application to mount and unmount file systems for removable storage."], + "MOUNT_FORMAT_FILESYSTEMS": ["signatureOrSystem", "format external storage", + "Allows the application to format removable storage."], + "ASEC_ACCESS": ["signature", "get information on internal storage", + "Allows the application to get information on internal storage."], + "ASEC_CREATE": ["signature", "create internal storage", "Allows the application to create internal storage."], + "ASEC_DESTROY": ["signature", "destroy internal storage", + "Allows the application to destroy internal storage."], + "ASEC_MOUNT_UNMOUNT": ["signature", "mount/unmount internal storage", + "Allows the application to mount/unmount internal storage."], + "ASEC_RENAME": ["signature", "rename internal storage", "Allows the application to rename internal storage."], + "WRITE_APN_SETTINGS": ["signatureOrSystem", "write Access Point Name settings", + "Allows an application to modify the APN settings, such as Proxy and Port of any APN."], + "SUBSCRIBED_FEEDS_READ": ["normal", "read subscribed feeds", + "Allows an application to receive details about the currently synced feeds."], + "SUBSCRIBED_FEEDS_WRITE": ["dangerous", "write subscribed feeds", + "Allows an application to modify your currently synced feeds. This could allow a malicious application to change your synced feeds."], + "CLEAR_APP_CACHE": ["dangerous", "delete all application cache data", + "Allows an application to free phone storage by deleting files in application cache directory. Access is usually very restricted to system process."], + "DIAGNOSTIC": ["signature", "read/write to resources owned by diag", + "Allows an application to read and write to any resource owned by the diag group; for example, files in /dev. This could potentially affect system stability and security. This should ONLY be used for hardware-specific diagnostics by the manufacturer or operator."], + "BROADCAST_PACKAGE_REMOVED": ["signature", "send package removed broadcast", + "Allows an application to broadcast a notification that an application package has been removed. Malicious applications may use this to kill any other application running."], + "BATTERY_STATS": ["dangerous", "modify battery statistics", + "Allows the modification of collected battery statistics. Not for use by normal applications."], + "MODIFY_APPWIDGET_BIND_PERMISSIONS": ["signatureOrSystem", "query/set which applications can bind AppWidgets.", + "Internal permission allowing an application to query/set which applications can bind AppWidgets."], + "CHANGE_BACKGROUND_DATA_SETTING": ["signature", "change background data usage setting", + "Allows an application to change the background data usage setting."], + "GLOBAL_SEARCH": ["signatureOrSystem", "", + "This permission can be used on content providers to allow the global search " \ + "system to access their data. Typically it used when the provider has some " \ "permissions protecting it (which global search would not be expected to hold)," \ - "and added as a read-only permission to the path in the provider where global "\ - "search queries are performed. This permission can not be held by regular applications; "\ - "it is used by applications to protect themselves from everyone else besides global search" ], - "GLOBAL_SEARCH_CONTROL" : [ "signature" , "" , "Internal permission protecting access to the global search " \ - "system: ensures that only the system can access the provider " \ - "to perform queries (since this otherwise provides unrestricted " \ - "access to a variety of content providers), and to write the " \ - "search statistics (to keep applications from gaming the source " \ - "ranking)." ], - "SET_WALLPAPER_COMPONENT" : [ "signatureOrSystem" , "set a live wallpaper" , "Allows applications to set a live wallpaper." ], - "READ_DREAM_STATE" : [ "signature", "", "Allows applications to read dream settings and dream state." ], - "WRITE_DREAM_STATE" : [ "signature", "", "Allows applications to write dream settings, and start or stop dreaming." ], - "WRITE_SETTINGS" : [ "normal" , "modify global system settings" , "Allows an application to modify the system\'s settings data. Malicious applications can corrupt your system\'s configuration." ], + "and added as a read-only permission to the path in the provider where global " \ + "search queries are performed. This permission can not be held by regular applications; " \ + "it is used by applications to protect themselves from everyone else besides global search"], + "GLOBAL_SEARCH_CONTROL": ["signature", "", "Internal permission protecting access to the global search " \ + "system: ensures that only the system can access the provider " \ + "to perform queries (since this otherwise provides unrestricted " \ + "access to a variety of content providers), and to write the " \ + "search statistics (to keep applications from gaming the source " \ + "ranking)."], + "SET_WALLPAPER_COMPONENT": ["signatureOrSystem", "set a live wallpaper", + "Allows applications to set a live wallpaper."], + "READ_DREAM_STATE": ["signature", "", "Allows applications to read dream settings and dream state."], + "WRITE_DREAM_STATE": ["signature", "", + "Allows applications to write dream settings, and start or stop dreaming."], + "WRITE_SETTINGS": ["normal", "modify global system settings", + "Allows an application to modify the system\'s settings data. Malicious applications can corrupt your system\'s configuration."], - # ACCOUNTS - "GET_ACCOUNTS" : [ "normal" , "discover known accounts" , "Allows an application to access the list of accounts known by the phone." ], - "AUTHENTICATE_ACCOUNTS" : [ "dangerous" , "act as an account authenticator" , "Allows an application to use the account authenticator capabilities of the Account Manager, including creating accounts as well as obtaining and setting their passwords." ], - "USE_CREDENTIALS" : [ "dangerous" , "use the authentication credentials of an account" , "Allows an application to request authentication tokens." ], - "MANAGE_ACCOUNTS" : [ "dangerous" , "manage the accounts list" , "Allows an application to perform operations like adding and removing accounts and deleting their password." ], - "ACCOUNT_MANAGER" : [ "signature" , "act as the Account Manager Service" , "Allows an application to make calls to Account Authenticators" ], + # ACCOUNTS + "GET_ACCOUNTS": ["normal", "discover known accounts", + "Allows an application to access the list of accounts known by the phone."], + "AUTHENTICATE_ACCOUNTS": ["dangerous", "act as an account authenticator", + "Allows an application to use the account authenticator capabilities of the Account Manager, including creating accounts as well as obtaining and setting their passwords."], + "USE_CREDENTIALS": ["dangerous", "use the authentication credentials of an account", + "Allows an application to request authentication tokens."], + "MANAGE_ACCOUNTS": ["dangerous", "manage the accounts list", + "Allows an application to perform operations like adding and removing accounts and deleting their password."], + "ACCOUNT_MANAGER": ["signature", "act as the Account Manager Service", + "Allows an application to make calls to Account Authenticators"], - # AFFECTS_BATTERY - "CHANGE_WIFI_MULTICAST_STATE" : [ "dangerous" , "allow Wi-Fi Multicast reception" , "Allows an application to receive packets not directly addressed to your device. This can be useful when discovering services offered nearby. It uses more power than the non-multicast mode." ], - "VIBRATE" : [ "normal" , "control vibrator" , "Allows the application to control the vibrator." ], - "FLASHLIGHT" : [ "normal" , "control flashlight" , "Allows the application to control the flashlight." ], - "WAKE_LOCK" : [ "normal" , "prevent phone from sleeping" , "Allows an application to prevent the phone from going to sleep." ], + # AFFECTS_BATTERY + "CHANGE_WIFI_MULTICAST_STATE": ["dangerous", "allow Wi-Fi Multicast reception", + "Allows an application to receive packets not directly addressed to your device. This can be useful when discovering services offered nearby. It uses more power than the non-multicast mode."], + "VIBRATE": ["normal", "control vibrator", "Allows the application to control the vibrator."], + "FLASHLIGHT": ["normal", "control flashlight", "Allows the application to control the flashlight."], + "WAKE_LOCK": ["normal", "prevent phone from sleeping", + "Allows an application to prevent the phone from going to sleep."], - # AUDIO_SETTINGS - "MODIFY_AUDIO_SETTINGS" : [ "normal" , "change your audio settings" , "Allows application to modify global audio settings, such as volume and routing." ], + # AUDIO_SETTINGS + "MODIFY_AUDIO_SETTINGS": ["normal", "change your audio settings", + "Allows application to modify global audio settings, such as volume and routing."], - # HARDWARE_CONTROLS - "MANAGE_USB": [ "signatureOrSystem", "manage preferences and permissions for USB devices", "Allows an application to manage preferences and permissions for USB devices" ], - "ACCESS_MTP": [ "signatureOrSystem", "access the MTP USB kernel driver", "Allows an application to access the MTP USB kernel driver. For use only by the device side MTP implementation." ], - "HARDWARE_TEST" : [ "signature" , "test hardware" , "Allows the application to control various peripherals for the purpose of hardware testing." ], + # HARDWARE_CONTROLS + "MANAGE_USB": ["signatureOrSystem", "manage preferences and permissions for USB devices", + "Allows an application to manage preferences and permissions for USB devices"], + "ACCESS_MTP": ["signatureOrSystem", "access the MTP USB kernel driver", + "Allows an application to access the MTP USB kernel driver. For use only by the device side MTP implementation."], + "HARDWARE_TEST": ["signature", "test hardware", + "Allows the application to control various peripherals for the purpose of hardware testing."], - # MICROPHONE - "RECORD_AUDIO" : [ "dangerous" , "record audio" , "Allows application to access the audio record path." ], + # MICROPHONE + "RECORD_AUDIO": ["dangerous", "record audio", "Allows application to access the audio record path."], - # CAMERA - "CAMERA" : [ "dangerous" , "take pictures and videos" , "Allows application to take pictures and videos with the camera. This allows the application to collect images that the camera is seeing at any time." ], + # CAMERA + "CAMERA": ["dangerous", "take pictures and videos", + "Allows application to take pictures and videos with the camera. This allows the application to collect images that the camera is seeing at any time."], - # PHONE_CALLS - "PROCESS_OUTGOING_CALLS" : [ "dangerous" , "intercept outgoing calls" , "Allows application to process outgoing calls and change the number to be dialled. Malicious applications may monitor, redirect or prevent outgoing calls." ], - "MODIFY_PHONE_STATE" : [ "signatureOrSystem" , "modify phone status" , "Allows modification of the telephony state - power on, mmi, etc. Does not include placing calls." ], - "READ_PHONE_STATE" : [ "dangerous" , "read phone state and identity" , "Allows the application to access the phone features of the device. An application with this permission can determine the phone number and serial number of this phone, whether a call is active, the number that call is connected to and so on." ], - "READ_PRIVILEGED_PHONE_STATE": [ "signatureOrSystem", "read access to privileged phone state", "Allows read access to privileged phone state." ], - "CALL_PHONE" : [ "dangerous" , "directly call phone numbers" , "Allows an application to initiate a phone call without going through the Dialer user interface for the user to confirm the call being placed. " ], - "USE_SIP" : [ "dangerous" , "make/receive Internet calls" , "Allows an application to use the SIP service to make/receive Internet calls." ], + # PHONE_CALLS + "PROCESS_OUTGOING_CALLS": ["dangerous", "intercept outgoing calls", + "Allows application to process outgoing calls and change the number to be dialled. Malicious applications may monitor, redirect or prevent outgoing calls."], + "MODIFY_PHONE_STATE": ["signatureOrSystem", "modify phone status", + "Allows modification of the telephony state - power on, mmi, etc. Does not include placing calls."], + "READ_PHONE_STATE": ["dangerous", "read phone state and identity", + "Allows the application to access the phone features of the device. An application with this permission can determine the phone number and serial number of this phone, whether a call is active, the number that call is connected to and so on."], + "READ_PRIVILEGED_PHONE_STATE": ["signatureOrSystem", "read access to privileged phone state", + "Allows read access to privileged phone state."], + "CALL_PHONE": ["dangerous", "directly call phone numbers", + "Allows an application to initiate a phone call without going through the Dialer user interface for the user to confirm the call being placed. "], + "USE_SIP": ["dangerous", "make/receive Internet calls", + "Allows an application to use the SIP service to make/receive Internet calls."], - # STORAGE - "WRITE_EXTERNAL_STORAGE" : [ "dangerous" , "modify/delete SD card contents" , "Allows an application to write to the SD card." ], - "WRITE_MEDIA_STORAGE": [ "signatureOrSystem", "write to internal media storage", "Allows an application to write to internal media storage" ], + # STORAGE + "WRITE_EXTERNAL_STORAGE": ["dangerous", "modify/delete SD card contents", + "Allows an application to write to the SD card."], + "WRITE_MEDIA_STORAGE": ["signatureOrSystem", "write to internal media storage", + "Allows an application to write to internal media storage"], - # SCREENLOCK - "DISABLE_KEYGUARD" : [ "dangerous" , "disable key lock" , "Allows an application to disable the key lock and any associated password security. A legitimate example of this is the phone disabling the key lock when receiving an incoming phone call, then re-enabling the key lock when the call is finished." ], + # SCREENLOCK + "DISABLE_KEYGUARD": ["dangerous", "disable key lock", + "Allows an application to disable the key lock and any associated password security. A legitimate example of this is the phone disabling the key lock when receiving an incoming phone call, then re-enabling the key lock when the call is finished."], - # APP_INFO - "GET_TASKS" : [ "dangerous" , "retrieve running applications" , "Allows application to retrieve information about currently and recently running tasks. May allow malicious applications to discover private information about other applications." ], - "REORDER_TASKS" : [ "normal" , "reorder applications running" , "Allows an application to move tasks to the foreground and background. Malicious applications can force themselves to the front without your control." ], - "REMOVE_TASKS": [ "signature", "", "Allows an application to change to remove/kill tasks" ], - "RESTART_PACKAGES" : [ "normal" , "kill background processes" , "Allows an application to kill background processes of other applications, even if memory is not low." ], - "KILL_BACKGROUND_PROCESSES" : [ "normal" , "kill background processes" , "Allows an application to kill background processes of other applications, even if memory is not low." ], - "PERSISTENT_ACTIVITY" : [ "normal" , "make application always run" , "Allows an application to make parts of itself persistent, so that the system can\'t use it for other applications." ], - "RECEIVE_BOOT_COMPLETED" : [ "normal" , "automatically start at boot" , "Allows an application to start itself as soon as the system has finished booting. This can make it take longer to start the phone and allow the application to slow down the overall phone by always running." ], + # APP_INFO + "GET_TASKS": ["dangerous", "retrieve running applications", + "Allows application to retrieve information about currently and recently running tasks. May allow malicious applications to discover private information about other applications."], + "REORDER_TASKS": ["normal", "reorder applications running", + "Allows an application to move tasks to the foreground and background. Malicious applications can force themselves to the front without your control."], + "REMOVE_TASKS": ["signature", "", "Allows an application to change to remove/kill tasks"], + "RESTART_PACKAGES": ["normal", "kill background processes", + "Allows an application to kill background processes of other applications, even if memory is not low."], + "KILL_BACKGROUND_PROCESSES": ["normal", "kill background processes", + "Allows an application to kill background processes of other applications, even if memory is not low."], + "PERSISTENT_ACTIVITY": ["normal", "make application always run", + "Allows an application to make parts of itself persistent, so that the system can\'t use it for other applications."], + "RECEIVE_BOOT_COMPLETED": ["normal", "automatically start at boot", + "Allows an application to start itself as soon as the system has finished booting. This can make it take longer to start the phone and allow the application to slow down the overall phone by always running."], - # DISPLAY - "SYSTEM_ALERT_WINDOW" : [ "dangerous" , "display system-level alerts" , "Allows an application to show system-alert windows. Malicious applications can take over the entire screen of the phone." ], + # DISPLAY + "SYSTEM_ALERT_WINDOW": ["dangerous", "display system-level alerts", + "Allows an application to show system-alert windows. Malicious applications can take over the entire screen of the phone."], - # WALLPAPER - "SET_WALLPAPER" : [ "normal" , "set wallpaper" , "Allows the application to set the system wallpaper." ], - "SET_WALLPAPER_HINTS" : [ "normal" , "set wallpaper size hints" , "Allows the application to set the system wallpaper size hints." ], + # WALLPAPER + "SET_WALLPAPER": ["normal", "set wallpaper", "Allows the application to set the system wallpaper."], + "SET_WALLPAPER_HINTS": ["normal", "set wallpaper size hints", + "Allows the application to set the system wallpaper size hints."], - # SYSTEM_CLOCK - "SET_TIME_ZONE" : [ "normal" , "set time zone" , "Allows an application to change the phone\'s time zone." ], + # SYSTEM_CLOCK + "SET_TIME_ZONE": ["normal", "set time zone", "Allows an application to change the phone\'s time zone."], - # STATUS_BAR - "EXPAND_STATUS_BAR" : [ "normal" , "expand/collapse status bar" , "Allows application to expand or collapse the status bar." ], + # STATUS_BAR + "EXPAND_STATUS_BAR": ["normal", "expand/collapse status bar", + "Allows application to expand or collapse the status bar."], - # SYNC_SETTINGS - "READ_SYNC_SETTINGS" : [ "normal" , "read sync settings" , "Allows an application to read the sync settings, such as whether sync is enabled for Contacts." ], - "WRITE_SYNC_SETTINGS" : [ "normal" , "write sync settings" , "Allows an application to modify the sync settings, such as whether sync is enabled for Contacts." ], - "READ_SYNC_STATS" : [ "normal" , "read sync statistics" , "Allows an application to read the sync stats; e.g. the history of syncs that have occurred." ], + # SYNC_SETTINGS + "READ_SYNC_SETTINGS": ["normal", "read sync settings", + "Allows an application to read the sync settings, such as whether sync is enabled for Contacts."], + "WRITE_SYNC_SETTINGS": ["normal", "write sync settings", + "Allows an application to modify the sync settings, such as whether sync is enabled for Contacts."], + "READ_SYNC_STATS": ["normal", "read sync statistics", + "Allows an application to read the sync stats; e.g. the history of syncs that have occurred."], - # DEVELOPMENT_TOOLS - "WRITE_SECURE_SETTINGS" : [ "signatureOrSystemOrDevelopment" , "modify secure system settings" , "Allows an application to modify the system\'s secure settings data. Not for use by normal applications." ], - "DUMP" : [ "signatureOrSystemOrDevelopment" , "retrieve system internal status" , "Allows application to retrieve internal status of the system. Malicious applications may retrieve a wide variety of private and secure information that they should never normally need." ], - "READ_LOGS" : [ "signatureOrSystemOrDevelopment" , "read sensitive log data" , "Allows an application to read from the system\'s various log files. This allows it to discover general information about what you are doing with the phone, potentially including personal or private information." ], - "SET_DEBUG_APP" : [ "signatureOrSystemOrDevelopment" , "enable application debugging" , "Allows an application to turn on debugging for another application. Malicious applications can use this to kill other applications." ], - "SET_PROCESS_LIMIT" : [ "signatureOrSystemOrDevelopment" , "limit number of running processes" , "Allows an application to control the maximum number of processes that will run. Never needed for normal applications." ], - "SET_ALWAYS_FINISH" : [ "signatureOrSystemOrDevelopment" , "make all background applications close" , "Allows an application to control whether activities are always finished as soon as they go to the background. Never needed for normal applications." ], - "SIGNAL_PERSISTENT_PROCESSES" : [ "signatureOrSystemOrDevelopment" , "send Linux signals to applications" , "Allows application to request that the supplied signal be sent to all persistent processes." ], - "ACCESS_ALL_EXTERNAL_STORAGE" : [ "signature", "", "Allows an application to access all multi-user external storage" ], + # DEVELOPMENT_TOOLS + "WRITE_SECURE_SETTINGS": ["signatureOrSystemOrDevelopment", "modify secure system settings", + "Allows an application to modify the system\'s secure settings data. Not for use by normal applications."], + "DUMP": ["signatureOrSystemOrDevelopment", "retrieve system internal status", + "Allows application to retrieve internal status of the system. Malicious applications may retrieve a wide variety of private and secure information that they should never normally need."], + "READ_LOGS": ["signatureOrSystemOrDevelopment", "read sensitive log data", + "Allows an application to read from the system\'s various log files. This allows it to discover general information about what you are doing with the phone, potentially including personal or private information."], + "SET_DEBUG_APP": ["signatureOrSystemOrDevelopment", "enable application debugging", + "Allows an application to turn on debugging for another application. Malicious applications can use this to kill other applications."], + "SET_PROCESS_LIMIT": ["signatureOrSystemOrDevelopment", "limit number of running processes", + "Allows an application to control the maximum number of processes that will run. Never needed for normal applications."], + "SET_ALWAYS_FINISH": ["signatureOrSystemOrDevelopment", "make all background applications close", + "Allows an application to control whether activities are always finished as soon as they go to the background. Never needed for normal applications."], + "SIGNAL_PERSISTENT_PROCESSES": ["signatureOrSystemOrDevelopment", "send Linux signals to applications", + "Allows application to request that the supplied signal be sent to all persistent processes."], + "ACCESS_ALL_EXTERNAL_STORAGE": ["signature", "", + "Allows an application to access all multi-user external storage"], - # No groups ... - "SET_TIME": [ "signatureOrSystem" , "set time" , "Allows an application to change the phone\'s clock time." ], - "ALLOW_ANY_CODEC_FOR_PLAYBACK": [ "signatureOrSystem", "", "Allows an application to use any media decoder when decoding for playback." ], - "STATUS_BAR" : [ "signatureOrSystem" , "disable or modify status bar" , "Allows application to disable the status bar or add and remove system icons." ], - "STATUS_BAR_SERVICE" : [ "signature" , "status bar" , "Allows the application to be the status bar." ], - "FORCE_BACK" : [ "signature" , "force application to close" , "Allows an application to force any activity that is in the foreground to close and go back. Should never be needed for normal applications." ], - "UPDATE_DEVICE_STATS" : [ "signatureOrSystem" , "modify battery statistics" , "Allows the modification of collected battery statistics. Not for use by normal applications." ], - "INTERNAL_SYSTEM_WINDOW" : [ "signature" , "display unauthorised windows" , "Allows the creation of windows that are intended to be used by the internal system user interface. Not for use by normal applications." ], - "MANAGE_APP_TOKENS" : [ "signature" , "manage application tokens" , "Allows applications to create and manage their own tokens, bypassing their normal Z-ordering. Should never be needed for normal applications." ], - "FREEZE_SCREEN": [ "signature", "", "Allows the application to temporarily freeze the screen for a full-screen transition." ], - "INJECT_EVENTS" : [ "signature" , "inject user events" , "Allows an application to inject user events (keys, touch, trackball) into the event stream and deliver them to ANY window. Without this permission, you can only deliver events to windows in your own process. Very few applications should need to use this permission" ], - "FILTER_EVENTS": [ "signature", "", "Allows an application to register an input filter which filters the stream of user events (keys, touch, trackball) before they are dispatched to any window" ], - "RETRIEVE_WINDOW_INFO" : [ "signature", "", "Allows an application to retrieve info for a window from the window manager." ], - "TEMPORARY_ENABLE_ACCESSIBILITY": [ "signature", "", "Allows an application to temporary enable accessibility on the device." ], - "MAGNIFY_DISPLAY": [ "signature", "", "Allows an application to magnify the content of a display." ], - "SET_ACTIVITY_WATCHER" : [ "signature" , "monitor and control all application launching" , "Allows an application to monitor and control how the system launches activities. Malicious applications may compromise the system completely. This permission is needed only for development, never for normal phone usage." ], - "SHUTDOWN" : [ "signatureOrSystem" , "partial shutdown" , "Puts the activity manager into a shut-down state. Does not perform a complete shut down." ], - "STOP_APP_SWITCHES" : [ "signatureOrSystem" , "prevent app switches" , "Prevents the user from switching to another application." ], - "READ_INPUT_STATE" : [ "signature" , "record what you type and actions that you take" , "Allows applications to watch the keys that you press even when interacting with another application (such as entering a password). Should never be needed for normal applications." ], - "BIND_INPUT_METHOD" : [ "signature" , "bind to an input method" , "Allows the holder to bind to the top-level interface of an input method. Should never be needed for normal applications." ], - "BIND_ACCESSIBILITY_SERVICE" : [ "signature", "", "Must be required by an android.accessibilityservice.AccessibilityService to ensure that only the system can bind to it. " ], - "BIND_TEXT_SERVICE" : [ "signature", "", "Must be required by a TextService (e.g. SpellCheckerService) to ensure that only the system can bind to it." ], - "BIND_VPN_SERVICE" : [ "signature", "", "Must be required by an {@link android.net.VpnService}, to ensure that only the system can bind to it." ], - "BIND_WALLPAPER" : [ "signatureOrSystem" , "bind to wallpaper" , "Allows the holder to bind to the top-level interface of wallpaper. Should never be needed for normal applications." ], - "BIND_DEVICE_ADMIN" : [ "signature" , "interact with device admin" , "Allows the holder to send intents to a device administrator. Should never be needed for normal applications." ], - "SET_ORIENTATION" : [ "signature" , "change screen orientation" , "Allows an application to change the rotation of the screen at any time. Should never be needed for normal applications." ], - "SET_POINTER_SPEED" : [ "signature", "", "Allows low-level access to setting the pointer speed. Not for use by normal applications. " ], - "SET_KEYBOARD_LAYOUT" : [ "signature", "", "Allows low-level access to setting the keyboard layout. Not for use by normal applications." ], - "INSTALL_PACKAGES" : [ "signatureOrSystem" , "directly install applications" , "Allows an application to install new or updated Android packages. Malicious applications can use this to add new applications with arbitrarily powerful permissions." ], - "CLEAR_APP_USER_DATA" : [ "signature" , "delete other applications\' data" , "Allows an application to clear user data." ], - "DELETE_CACHE_FILES" : [ "signatureOrSystem" , "delete other applications\' caches" , "Allows an application to delete cache files." ], - "DELETE_PACKAGES" : [ "signatureOrSystem" , "delete applications" , "Allows an application to delete Android packages. Malicious applications can use this to delete important applications." ], - "MOVE_PACKAGE" : [ "signatureOrSystem" , "Move application resources" , "Allows an application to move application resources from internal to external media and vice versa." ], - "CHANGE_COMPONENT_ENABLED_STATE" : [ "signatureOrSystem" , "enable or disable application components" , "Allows an application to change whether or not a component of another application is enabled. Malicious applications can use this to disable important phone capabilities. It is important to be careful with permission, as it is possible to bring application components into an unusable, inconsistent or unstable state." ], - "GRANT_REVOKE_PERMISSIONS" : [ "signature", "", "Allows an application to grant or revoke specific permissions." ], - "ACCESS_SURFACE_FLINGER" : [ "signature" , "access SurfaceFlinger" , "Allows application to use SurfaceFlinger low-level features." ], - "READ_FRAME_BUFFER" : [ "signatureOrSystem" , "read frame buffer" , "Allows application to read the content of the frame buffer." ], - "CONFIGURE_WIFI_DISPLAY" : [ "signature", "", "Allows an application to configure and connect to Wifi displays" ], - "CONTROL_WIFI_DISPLAY" : [ "signature", "", "Allows an application to control low-level features of Wifi displays such as opening an RTSP socket. This permission should only be used by the display manager." ], - "BRICK" : [ "signature" , "permanently disable phone" , "Allows the application to disable the entire phone permanently. This is very dangerous." ], - "REBOOT" : [ "signatureOrSystem" , "force phone reboot" , "Allows the application to force the phone to reboot." ], - "DEVICE_POWER" : [ "signature" , "turn phone on or off" , "Allows the application to turn the phone on or off." ], - "NET_TUNNELING" : [ "signature", "", "Allows low-level access to tun tap driver " ], - "FACTORY_TEST" : [ "signature" , "run in factory test mode" , "Run as a low-level manufacturer test, allowing complete access to the phone hardware. Only available when a phone is running in manufacturer test mode." ], - "MASTER_CLEAR" : [ "signatureOrSystem" , "reset system to factory defaults" , "Allows an application to completely reset the system to its factory settings, erasing all data, configuration and installed applications." ], - "CALL_PRIVILEGED" : [ "signatureOrSystem" , "directly call any phone numbers" , "Allows the application to call any phone number, including emergency numbers, without your intervention. Malicious applications may place unnecessary and illegal calls to emergency services." ], - "PERFORM_CDMA_PROVISIONING" : [ "signatureOrSystem" , "directly start CDMA phone setup" , "Allows the application to start CDMA provisioning. Malicious applications may start CDMA provisioning unnecessarily" ], - "CONTROL_LOCATION_UPDATES" : [ "signatureOrSystem" , "control location update notifications" , "Allows enabling/disabling location update notifications from the radio. Not for use by normal applications." ], - "ACCESS_CHECKIN_PROPERTIES" : [ "signatureOrSystem" , "access check-in properties" , "Allows read/write access to properties uploaded by the check-in service. Not for use by normal applications." ], - "PACKAGE_USAGE_STATS" : [ "signatureOrSystem" , "update component usage statistics" , "Allows the modification of collected component usage statistics. Not for use by normal applications." ], - "BACKUP" : [ "signatureOrSystem" , "control system back up and restore" , "Allows the application to control the system\'s back-up and restore mechanism. Not for use by normal applications." ], - "CONFIRM_FULL_BACKUP" : [ "signature", "", "Allows a package to launch the secure full-backup confirmation UI. ONLY the system process may hold this permission." ], - "BIND_REMOTEVIEWS" : [ "signatureOrSystem", "", "Must be required by a {@link android.widget.RemoteViewsService}, to ensure that only the system can bind to it." ], - "ACCESS_CACHE_FILESYSTEM" : [ "signatureOrSystem" , "access the cache file system" , "Allows an application to read and write the cache file system." ], - "COPY_PROTECTED_DATA" : [ "signature" , "Allows to invoke default container service to copy content. Not for use by normal applications." , "Allows to invoke default container service to copy content. Not for use by normal applications." ], - "CRYPT_KEEPER" : [ "signatureOrSystem", "access to the encryption methods", "Internal permission protecting access to the encryption methods" ], - "READ_NETWORK_USAGE_HISTORY" : [ "signatureOrSystem", "read historical network usage for specific networks and applications.", "Allows an application to read historical network usage for specific networks and applications."], - "MANAGE_NETWORK_POLICY": [ "signature", "manage network policies and to define application-specific rules.", "Allows an application to manage network policies and to define application-specific rules."], - "MODIFY_NETWORK_ACCOUNTING" : [ "signatureOrSystem", "account its network traffic against other UIDs.", "Allows an application to account its network traffic against other UIDs."], - "C2D_MESSAGE" : [ "signature" , "C2DM permission." , "C2DM permission." ], - "PACKAGE_VERIFICATION_AGENT" : [ "signatureOrSystem", "Package verifier needs to have this permission before the PackageManager will trust it to verify packages.", "Package verifier needs to have this permission before the PackageManager will trust it to verify packages."], - "BIND_PACKAGE_VERIFIER" : [ "signature", "", "Must be required by package verifier receiver, to ensure that only the system can interact with it.."], - "SERIAL_PORT" : [ "signature", "", "Allows applications to access serial ports via the SerialManager." ], - "ACCESS_CONTENT_PROVIDERS_EXTERNALLY": [ "signature", "", "Allows the holder to access content providers from outside an ApplicationThread. This permission is enforced by the ActivityManagerService on the corresponding APIs,in particular ActivityManagerService#getContentProviderExternal(String) and ActivityManagerService#removeContentProviderExternal(String)."], - "UPDATE_LOCK" : [ "signatureOrSystem", "", "Allows an application to hold an UpdateLock, recommending that a headless OTA reboot "\ - "*not* occur while the lock is held"], - "WRITE_GSERVICES" : [ "signatureOrSystem" , "modify the Google services map" , "Allows an application to modify the Google services map. Not for use by normal applications." ], + # No groups ... + "SET_TIME": ["signatureOrSystem", "set time", "Allows an application to change the phone\'s clock time."], + "ALLOW_ANY_CODEC_FOR_PLAYBACK": ["signatureOrSystem", "", + "Allows an application to use any media decoder when decoding for playback."], + "STATUS_BAR": ["signatureOrSystem", "disable or modify status bar", + "Allows application to disable the status bar or add and remove system icons."], + "STATUS_BAR_SERVICE": ["signature", "status bar", "Allows the application to be the status bar."], + "FORCE_BACK": ["signature", "force application to close", + "Allows an application to force any activity that is in the foreground to close and go back. Should never be needed for normal applications."], + "UPDATE_DEVICE_STATS": ["signatureOrSystem", "modify battery statistics", + "Allows the modification of collected battery statistics. Not for use by normal applications."], + "INTERNAL_SYSTEM_WINDOW": ["signature", "display unauthorised windows", + "Allows the creation of windows that are intended to be used by the internal system user interface. Not for use by normal applications."], + "MANAGE_APP_TOKENS": ["signature", "manage application tokens", + "Allows applications to create and manage their own tokens, bypassing their normal Z-ordering. Should never be needed for normal applications."], + "FREEZE_SCREEN": ["signature", "", + "Allows the application to temporarily freeze the screen for a full-screen transition."], + "INJECT_EVENTS": ["signature", "inject user events", + "Allows an application to inject user events (keys, touch, trackball) into the event stream and deliver them to ANY window. Without this permission, you can only deliver events to windows in your own process. Very few applications should need to use this permission"], + "FILTER_EVENTS": ["signature", "", + "Allows an application to register an input filter which filters the stream of user events (keys, touch, trackball) before they are dispatched to any window"], + "RETRIEVE_WINDOW_INFO": ["signature", "", + "Allows an application to retrieve info for a window from the window manager."], + "TEMPORARY_ENABLE_ACCESSIBILITY": ["signature", "", + "Allows an application to temporary enable accessibility on the device."], + "MAGNIFY_DISPLAY": ["signature", "", "Allows an application to magnify the content of a display."], + "SET_ACTIVITY_WATCHER": ["signature", "monitor and control all application launching", + "Allows an application to monitor and control how the system launches activities. Malicious applications may compromise the system completely. This permission is needed only for development, never for normal phone usage."], + "SHUTDOWN": ["signatureOrSystem", "partial shutdown", + "Puts the activity manager into a shut-down state. Does not perform a complete shut down."], + "STOP_APP_SWITCHES": ["signatureOrSystem", "prevent app switches", + "Prevents the user from switching to another application."], + "READ_INPUT_STATE": ["signature", "record what you type and actions that you take", + "Allows applications to watch the keys that you press even when interacting with another application (such as entering a password). Should never be needed for normal applications."], + "BIND_INPUT_METHOD": ["signature", "bind to an input method", + "Allows the holder to bind to the top-level interface of an input method. Should never be needed for normal applications."], + "BIND_ACCESSIBILITY_SERVICE": ["signature", "", + "Must be required by an android.accessibilityservice.AccessibilityService to ensure that only the system can bind to it. "], + "BIND_TEXT_SERVICE": ["signature", "", + "Must be required by a TextService (e.g. SpellCheckerService) to ensure that only the system can bind to it."], + "BIND_VPN_SERVICE": ["signature", "", + "Must be required by an {@link android.net.VpnService}, to ensure that only the system can bind to it."], + "BIND_WALLPAPER": ["signatureOrSystem", "bind to wallpaper", + "Allows the holder to bind to the top-level interface of wallpaper. Should never be needed for normal applications."], + "BIND_DEVICE_ADMIN": ["signature", "interact with device admin", + "Allows the holder to send intents to a device administrator. Should never be needed for normal applications."], + "SET_ORIENTATION": ["signature", "change screen orientation", + "Allows an application to change the rotation of the screen at any time. Should never be needed for normal applications."], + "SET_POINTER_SPEED": ["signature", "", + "Allows low-level access to setting the pointer speed. Not for use by normal applications. "], + "SET_KEYBOARD_LAYOUT": ["signature", "", + "Allows low-level access to setting the keyboard layout. Not for use by normal applications."], + "INSTALL_PACKAGES": ["signatureOrSystem", "directly install applications", + "Allows an application to install new or updated Android packages. Malicious applications can use this to add new applications with arbitrarily powerful permissions."], + "CLEAR_APP_USER_DATA": ["signature", "delete other applications\' data", + "Allows an application to clear user data."], + "DELETE_CACHE_FILES": ["signatureOrSystem", "delete other applications\' caches", + "Allows an application to delete cache files."], + "DELETE_PACKAGES": ["signatureOrSystem", "delete applications", + "Allows an application to delete Android packages. Malicious applications can use this to delete important applications."], + "MOVE_PACKAGE": ["signatureOrSystem", "Move application resources", + "Allows an application to move application resources from internal to external media and vice versa."], + "CHANGE_COMPONENT_ENABLED_STATE": ["signatureOrSystem", "enable or disable application components", + "Allows an application to change whether or not a component of another application is enabled. Malicious applications can use this to disable important phone capabilities. It is important to be careful with permission, as it is possible to bring application components into an unusable, inconsistent or unstable state."], + "GRANT_REVOKE_PERMISSIONS": ["signature", "", "Allows an application to grant or revoke specific permissions."], + "ACCESS_SURFACE_FLINGER": ["signature", "access SurfaceFlinger", + "Allows application to use SurfaceFlinger low-level features."], + "READ_FRAME_BUFFER": ["signatureOrSystem", "read frame buffer", + "Allows application to read the content of the frame buffer."], + "CONFIGURE_WIFI_DISPLAY": ["signature", "", "Allows an application to configure and connect to Wifi displays"], + "CONTROL_WIFI_DISPLAY": ["signature", "", + "Allows an application to control low-level features of Wifi displays such as opening an RTSP socket. This permission should only be used by the display manager."], + "BRICK": ["signature", "permanently disable phone", + "Allows the application to disable the entire phone permanently. This is very dangerous."], + "REBOOT": ["signatureOrSystem", "force phone reboot", "Allows the application to force the phone to reboot."], + "DEVICE_POWER": ["signature", "turn phone on or off", "Allows the application to turn the phone on or off."], + "NET_TUNNELING": ["signature", "", "Allows low-level access to tun tap driver "], + "FACTORY_TEST": ["signature", "run in factory test mode", + "Run as a low-level manufacturer test, allowing complete access to the phone hardware. Only available when a phone is running in manufacturer test mode."], + "MASTER_CLEAR": ["signatureOrSystem", "reset system to factory defaults", + "Allows an application to completely reset the system to its factory settings, erasing all data, configuration and installed applications."], + "CALL_PRIVILEGED": ["signatureOrSystem", "directly call any phone numbers", + "Allows the application to call any phone number, including emergency numbers, without your intervention. Malicious applications may place unnecessary and illegal calls to emergency services."], + "PERFORM_CDMA_PROVISIONING": ["signatureOrSystem", "directly start CDMA phone setup", + "Allows the application to start CDMA provisioning. Malicious applications may start CDMA provisioning unnecessarily"], + "CONTROL_LOCATION_UPDATES": ["signatureOrSystem", "control location update notifications", + "Allows enabling/disabling location update notifications from the radio. Not for use by normal applications."], + "ACCESS_CHECKIN_PROPERTIES": ["signatureOrSystem", "access check-in properties", + "Allows read/write access to properties uploaded by the check-in service. Not for use by normal applications."], + "PACKAGE_USAGE_STATS": ["signatureOrSystem", "update component usage statistics", + "Allows the modification of collected component usage statistics. Not for use by normal applications."], + "BACKUP": ["signatureOrSystem", "control system back up and restore", + "Allows the application to control the system\'s back-up and restore mechanism. Not for use by normal applications."], + "CONFIRM_FULL_BACKUP": ["signature", "", + "Allows a package to launch the secure full-backup confirmation UI. ONLY the system process may hold this permission."], + "BIND_REMOTEVIEWS": ["signatureOrSystem", "", + "Must be required by a {@link android.widget.RemoteViewsService}, to ensure that only the system can bind to it."], + "ACCESS_CACHE_FILESYSTEM": ["signatureOrSystem", "access the cache file system", + "Allows an application to read and write the cache file system."], + "COPY_PROTECTED_DATA": ["signature", + "Allows to invoke default container service to copy content. Not for use by normal applications.", + "Allows to invoke default container service to copy content. Not for use by normal applications."], + "CRYPT_KEEPER": ["signatureOrSystem", "access to the encryption methods", + "Internal permission protecting access to the encryption methods"], + "READ_NETWORK_USAGE_HISTORY": ["signatureOrSystem", + "read historical network usage for specific networks and applications.", + "Allows an application to read historical network usage for specific networks and applications."], + "MANAGE_NETWORK_POLICY": ["signature", "manage network policies and to define application-specific rules.", + "Allows an application to manage network policies and to define application-specific rules."], + "MODIFY_NETWORK_ACCOUNTING": ["signatureOrSystem", "account its network traffic against other UIDs.", + "Allows an application to account its network traffic against other UIDs."], + "C2D_MESSAGE": ["signature", "C2DM permission.", "C2DM permission."], + "PACKAGE_VERIFICATION_AGENT": ["signatureOrSystem", + "Package verifier needs to have this permission before the PackageManager will trust it to verify packages.", + "Package verifier needs to have this permission before the PackageManager will trust it to verify packages."], + "BIND_PACKAGE_VERIFIER": ["signature", "", + "Must be required by package verifier receiver, to ensure that only the system can interact with it.."], + "SERIAL_PORT": ["signature", "", "Allows applications to access serial ports via the SerialManager."], + "ACCESS_CONTENT_PROVIDERS_EXTERNALLY": ["signature", "", + "Allows the holder to access content providers from outside an ApplicationThread. This permission is enforced by the ActivityManagerService on the corresponding APIs,in particular ActivityManagerService#getContentProviderExternal(String) and ActivityManagerService#removeContentProviderExternal(String)."], + "UPDATE_LOCK": ["signatureOrSystem", "", + "Allows an application to hold an UpdateLock, recommending that a headless OTA reboot " \ + "*not* occur while the lock is held"], + "WRITE_GSERVICES": ["signatureOrSystem", "modify the Google services map", + "Allows an application to modify the Google services map. Not for use by normal applications."], - "ACCESS_USB" : [ "signatureOrSystem" , "access USB devices" , "Allows the application to access USB devices." ], + "ACCESS_USB": ["signatureOrSystem", "access USB devices", "Allows the application to access USB devices."], }, "MANIFEST_PERMISSION_GROUP": { - "ACCOUNTS": "Permissions for direct access to the accounts managed by the Account Manager.", - "AFFECTS_BATTERY": "Used for permissions that provide direct access to the hardware on the device that has an effect on battery life. This includes vibrator, flashlight, etc.", - "APP_INFO": "Group of permissions that are related to the other applications installed on the system.", - "AUDIO_SETTINGS": "Used for permissions that provide direct access to speaker settings the device.", - "BLUETOOTH_NETWORK": "Used for permissions that provide access to other devices through Bluetooth.", - "BOOKMARKS": "Used for permissions that provide access to the user bookmarks and browser history.", - "CALENDAR": "Used for permissions that provide access to the device calendar to create / view events", - "CAMERA": "Used for permissions that are associated with accessing camera or capturing images/video from the device.", - "COST_MONEY": "Used for permissions that can be used to make the user spend money without their direct involvement.", - "DEVICE_ALARMS": "Used for permissions that provide access to the user voicemail box.", - "DEVELOPMENT_TOOLS": "Group of permissions that are related to development features.", - "DISPLAY": "Group of permissions that allow manipulation of how another application displays UI to the user.", - "HARDWARE_CONTROLS": "Used for permissions that provide direct access to the hardware on the device.", - "LOCATION": "Used for permissions that allow access to the user's current location.", - "MESSAGES": "Used for permissions that allow an application to send messages on behalf of the user or intercept messages being received by the user.", - "MICROPHONE": "Used for permissions that are associated with accessing microphone audio from the device. Note that phone calls also capture audio but are in a separate (more visible) permission group.", - "NETWORK": "Used for permissions that provide access to networking services.", - "PERSONAL_INFO": "Used for permissions that provide access to the user's private data, such as contacts, calendar events, e-mail messages, etc.", - "PHONE_CALLS": "Used for permissions that are associated with accessing and modifyign telephony state: intercepting outgoing calls, reading and modifying the phone state.", - "STORAGE": "Group of permissions that are related to SD card access.", - "SOCIAL_INFO": "Used for permissions that provide access to the user's social connections, such as contacts, call logs, social stream, etc. This includes both reading and writing of this data (which should generally be expressed as two distinct permissions)", - "SCREENLOCK": "Group of permissions that are related to the screenlock.", - "STATUS_BAR": "Used for permissions that change the status bar.", - "SYSTEM_CLOCK": "Group of permissions that are related to system clock.", - "SYSTEM_TOOLS": "Group of permissions that are related to system APIs.", - "SYNC_SETTINGS": "Used for permissions that access the sync settings or sync related information.", - "USER_DICTIONARY": "Used for permissions that provide access to the user calendar to create / view events.", - "VOICEMAIL": "Used for permissions that provide access to the user voicemail box.", - "WALLPAPER": "Group of permissions that allow manipulation of how another application displays UI to the user.", - "WRITE_USER_DICTIONARY": "Used for permissions that provide access to the user calendar to create / view events.", - }, + "ACCOUNTS": "Permissions for direct access to the accounts managed by the Account Manager.", + "AFFECTS_BATTERY": "Used for permissions that provide direct access to the hardware on the device that has an effect on battery life. This includes vibrator, flashlight, etc.", + "APP_INFO": "Group of permissions that are related to the other applications installed on the system.", + "AUDIO_SETTINGS": "Used for permissions that provide direct access to speaker settings the device.", + "BLUETOOTH_NETWORK": "Used for permissions that provide access to other devices through Bluetooth.", + "BOOKMARKS": "Used for permissions that provide access to the user bookmarks and browser history.", + "CALENDAR": "Used for permissions that provide access to the device calendar to create / view events", + "CAMERA": "Used for permissions that are associated with accessing camera or capturing images/video from the device.", + "COST_MONEY": "Used for permissions that can be used to make the user spend money without their direct involvement.", + "DEVICE_ALARMS": "Used for permissions that provide access to the user voicemail box.", + "DEVELOPMENT_TOOLS": "Group of permissions that are related to development features.", + "DISPLAY": "Group of permissions that allow manipulation of how another application displays UI to the user.", + "HARDWARE_CONTROLS": "Used for permissions that provide direct access to the hardware on the device.", + "LOCATION": "Used for permissions that allow access to the user's current location.", + "MESSAGES": "Used for permissions that allow an application to send messages on behalf of the user or intercept messages being received by the user.", + "MICROPHONE": "Used for permissions that are associated with accessing microphone audio from the device. Note that phone calls also capture audio but are in a separate (more visible) permission group.", + "NETWORK": "Used for permissions that provide access to networking services.", + "PERSONAL_INFO": "Used for permissions that provide access to the user's private data, such as contacts, calendar events, e-mail messages, etc.", + "PHONE_CALLS": "Used for permissions that are associated with accessing and modifyign telephony state: intercepting outgoing calls, reading and modifying the phone state.", + "STORAGE": "Group of permissions that are related to SD card access.", + "SOCIAL_INFO": "Used for permissions that provide access to the user's social connections, such as contacts, call logs, social stream, etc. This includes both reading and writing of this data (which should generally be expressed as two distinct permissions)", + "SCREENLOCK": "Group of permissions that are related to the screenlock.", + "STATUS_BAR": "Used for permissions that change the status bar.", + "SYSTEM_CLOCK": "Group of permissions that are related to system clock.", + "SYSTEM_TOOLS": "Group of permissions that are related to system APIs.", + "SYNC_SETTINGS": "Used for permissions that access the sync settings or sync related information.", + "USER_DICTIONARY": "Used for permissions that provide access to the user calendar to create / view events.", + "VOICEMAIL": "Used for permissions that provide access to the user voicemail box.", + "WALLPAPER": "Group of permissions that allow manipulation of how another application displays UI to the user.", + "WRITE_USER_DICTIONARY": "Used for permissions that provide access to the user calendar to create / view events.", + }, } diff --git a/androguard/core/data/data.py b/androguard/core/data/data.py index fe7f5490..c4a02039 100644 --- a/androguard/core/data/data.py +++ b/androguard/core/data/data.py @@ -36,7 +36,7 @@ class DexViewer(object): def add_exception_node(self, exception, id_i): buff = "" - # 9933FF + # 9933FF height = 2 width = 0 label = "" @@ -49,7 +49,7 @@ class DexViewer(object): width = max(len(c_label), width) height += 1 - return self._create_node( id_i, height, width, "9333FF", label ) + return self._create_node(id_i, height, width, "9333FF", label) def add_method_node(self, i, id_i): height = 0 @@ -62,7 +62,7 @@ class DexViewer(object): height = 3 width = len(label) - return self._create_node( id_i, height, width, "FF0000", label ) + return self._create_node(id_i, height, width, "FF0000", label) def add_node(self, i, id_i): height = 0 @@ -79,7 +79,7 @@ class DexViewer(object): if height < 10: height += 3 - return self._create_node( id_i, height, width, "FFCC00", label ) + return self._create_node(id_i, height, width, "FFCC00", label) def add_edge(self, i, id_i, j, id_j, l_eid, val): buff = "\n" % (len(l_eid), id_i, id_j) @@ -100,7 +100,7 @@ class DexViewer(object): buff += "\n" - l_eid[ "%d+%d" % (id_i, id_j) ] = len(l_eid) + l_eid["%d+%d" % (id_i, id_j)] = len(l_eid) return buff def new_id(self, i, l): @@ -136,7 +136,7 @@ class DexViewer(object): l_eid = {} for method in _class.get_methods(): - mx = self.vmx.get_method( method ) + mx = self.vmx.get_method(method) exceptions = mx.exceptions id_method = self.new_id(method, l_id) @@ -146,7 +146,7 @@ class DexViewer(object): id_i = self.new_id(i, l_id) print(i, id_i, i.exception_analysis) - buff_nodes += self.add_node( i, id_i ) + buff_nodes += self.add_node(i, id_i) # add childs nodes val = 0 @@ -169,18 +169,18 @@ class DexViewer(object): buff_nodes += self.add_exception_node(i.exception_analysis, id_exceptions) buff_edges += self.add_edge(None, id_exceptions, None, id_i, l_eid, 2) - buff_edges += self.add_edge(None, id_method, None, id_method+1, l_eid, 2) + buff_edges += self.add_edge(None, id_method, None, id_method + 1, l_eid, 2) buff += buff_nodes buff += buff_edges - buff += "\n" buff += "\n" - H[ name ] = buff + H[name] = buff return H + class Directory(object): def __init__(self, name): self.name = name @@ -192,6 +192,7 @@ class Directory(object): def set_color(self, color): self.color = color + class File(object): def __init__(self, name, file_type, file_crc): self.name = name @@ -203,15 +204,17 @@ class File(object): self.width = max(len(self.name), len(self.file_type)) + def splitall(path, z): if len(path) == 0: return - l = os.path.split( path ) + l = os.path.split(path) z.append(l[0]) for i in l: - return splitall( i, z ) + return splitall(i, z) + class ApkViewer(object): def __init__(self, a): @@ -221,38 +224,37 @@ class ApkViewer(object): self.all_files = {} self.ids = {} - root = Directory( "APK" ) - root.set_color( "00FF00" ) + root = Directory("APK") + root.set_color("00FF00") - self.ids[ root ] = len(self.ids) - self.G.add_node( root ) + self.ids[root] = len(self.ids) + self.G.add_node(root) for x, y, z in self.a.get_files_information(): print(x, y, z, os.path.basename(x)) l = [] - splitall( x, l ) + splitall(x, l) l.reverse() l.pop(0) - last = root for i in l: if i not in self.all_files: - tmp = Directory( i ) - self.ids[ tmp ] = len(self.ids) - self.all_files[ i ] = tmp + tmp = Directory(i) + self.ids[tmp] = len(self.ids) + self.all_files[i] = tmp else: - tmp = self.all_files[ i ] + tmp = self.all_files[i] self.G.add_edge(last, tmp) last = tmp n1 = last - n2 = File( x, y, z ) + n2 = File(x, y, z) self.G.add_edge(n1, n2) - self.ids[ n2 ] = len(self.ids) + self.ids[n2] = len(self.ids) def export_to_gml(self): buff = "\n" @@ -261,10 +263,8 @@ class ApkViewer(object): buff += "\n" buff += "\n" - buff += "\n" - for node in self.G.nodes(): print(node) diff --git a/androguard/core/resources/public.py b/androguard/core/resources/public.py index 2965a0c8..3a7f3f4f 100644 --- a/androguard/core/resources/public.py +++ b/androguard/core/resources/public.py @@ -1,1935 +1,1935 @@ resources = { 'style': { - 'Animation' : 16973824, - 'Animation.Activity' : 16973825, - 'Animation.Dialog' : 16973826, - 'Animation.InputMethod' : 16973910, - 'Animation.Toast' : 16973828, - 'Animation.Translucent' : 16973827, - 'DeviceDefault.ButtonBar' : 16974287, - 'DeviceDefault.ButtonBar.AlertDialog' : 16974288, - 'DeviceDefault.Light.ButtonBar' : 16974290, - 'DeviceDefault.Light.ButtonBar.AlertDialog' : 16974291, - 'DeviceDefault.Light.SegmentedButton' : 16974292, - 'DeviceDefault.SegmentedButton' : 16974289, - 'Holo.ButtonBar' : 16974053, - 'Holo.ButtonBar.AlertDialog' : 16974055, - 'Holo.Light.ButtonBar' : 16974054, - 'Holo.Light.ButtonBar.AlertDialog' : 16974056, - 'Holo.Light.SegmentedButton' : 16974058, - 'Holo.SegmentedButton' : 16974057, - 'MediaButton' : 16973879, - 'MediaButton.Ffwd' : 16973883, - 'MediaButton.Next' : 16973881, - 'MediaButton.Pause' : 16973885, - 'MediaButton.Play' : 16973882, - 'MediaButton.Previous' : 16973880, - 'MediaButton.Rew' : 16973884, - 'TextAppearance' : 16973886, - 'TextAppearance.DeviceDefault' : 16974253, - 'TextAppearance.DeviceDefault.DialogWindowTitle' : 16974264, - 'TextAppearance.DeviceDefault.Inverse' : 16974254, - 'TextAppearance.DeviceDefault.Large' : 16974255, - 'TextAppearance.DeviceDefault.Large.Inverse' : 16974256, - 'TextAppearance.DeviceDefault.Medium' : 16974257, - 'TextAppearance.DeviceDefault.Medium.Inverse' : 16974258, - 'TextAppearance.DeviceDefault.SearchResult.Subtitle' : 16974262, - 'TextAppearance.DeviceDefault.SearchResult.Title' : 16974261, - 'TextAppearance.DeviceDefault.Small' : 16974259, - 'TextAppearance.DeviceDefault.Small.Inverse' : 16974260, - 'TextAppearance.DeviceDefault.Widget' : 16974265, - 'TextAppearance.DeviceDefault.Widget.ActionBar.Menu' : 16974286, - 'TextAppearance.DeviceDefault.Widget.ActionBar.Subtitle' : 16974279, - 'TextAppearance.DeviceDefault.Widget.ActionBar.Subtitle.Inverse' : 16974283, - 'TextAppearance.DeviceDefault.Widget.ActionBar.Title' : 16974278, - 'TextAppearance.DeviceDefault.Widget.ActionBar.Title.Inverse' : 16974282, - 'TextAppearance.DeviceDefault.Widget.ActionMode.Subtitle' : 16974281, - 'TextAppearance.DeviceDefault.Widget.ActionMode.Subtitle.Inverse' : 16974285, - 'TextAppearance.DeviceDefault.Widget.ActionMode.Title' : 16974280, - 'TextAppearance.DeviceDefault.Widget.ActionMode.Title.Inverse' : 16974284, - 'TextAppearance.DeviceDefault.Widget.Button' : 16974266, - 'TextAppearance.DeviceDefault.Widget.DropDownHint' : 16974271, - 'TextAppearance.DeviceDefault.Widget.DropDownItem' : 16974272, - 'TextAppearance.DeviceDefault.Widget.EditText' : 16974274, - 'TextAppearance.DeviceDefault.Widget.IconMenu.Item' : 16974267, - 'TextAppearance.DeviceDefault.Widget.PopupMenu' : 16974275, - 'TextAppearance.DeviceDefault.Widget.PopupMenu.Large' : 16974276, - 'TextAppearance.DeviceDefault.Widget.PopupMenu.Small' : 16974277, - 'TextAppearance.DeviceDefault.Widget.TabWidget' : 16974268, - 'TextAppearance.DeviceDefault.Widget.TextView' : 16974269, - 'TextAppearance.DeviceDefault.Widget.TextView.PopupMenu' : 16974270, - 'TextAppearance.DeviceDefault.Widget.TextView.SpinnerItem' : 16974273, - 'TextAppearance.DeviceDefault.WindowTitle' : 16974263, - 'TextAppearance.DialogWindowTitle' : 16973889, - 'TextAppearance.Holo' : 16974075, - 'TextAppearance.Holo.DialogWindowTitle' : 16974103, - 'TextAppearance.Holo.Inverse' : 16974076, - 'TextAppearance.Holo.Large' : 16974077, - 'TextAppearance.Holo.Large.Inverse' : 16974078, - 'TextAppearance.Holo.Medium' : 16974079, - 'TextAppearance.Holo.Medium.Inverse' : 16974080, - 'TextAppearance.Holo.SearchResult.Subtitle' : 16974084, - 'TextAppearance.Holo.SearchResult.Title' : 16974083, - 'TextAppearance.Holo.Small' : 16974081, - 'TextAppearance.Holo.Small.Inverse' : 16974082, - 'TextAppearance.Holo.Widget' : 16974085, - 'TextAppearance.Holo.Widget.ActionBar.Menu' : 16974112, - 'TextAppearance.Holo.Widget.ActionBar.Subtitle' : 16974099, - 'TextAppearance.Holo.Widget.ActionBar.Subtitle.Inverse' : 16974109, - 'TextAppearance.Holo.Widget.ActionBar.Title' : 16974098, - 'TextAppearance.Holo.Widget.ActionBar.Title.Inverse' : 16974108, - 'TextAppearance.Holo.Widget.ActionMode.Subtitle' : 16974101, - 'TextAppearance.Holo.Widget.ActionMode.Subtitle.Inverse' : 16974111, - 'TextAppearance.Holo.Widget.ActionMode.Title' : 16974100, - 'TextAppearance.Holo.Widget.ActionMode.Title.Inverse' : 16974110, - 'TextAppearance.Holo.Widget.Button' : 16974086, - 'TextAppearance.Holo.Widget.DropDownHint' : 16974091, - 'TextAppearance.Holo.Widget.DropDownItem' : 16974092, - 'TextAppearance.Holo.Widget.EditText' : 16974094, - 'TextAppearance.Holo.Widget.IconMenu.Item' : 16974087, - 'TextAppearance.Holo.Widget.PopupMenu' : 16974095, - 'TextAppearance.Holo.Widget.PopupMenu.Large' : 16974096, - 'TextAppearance.Holo.Widget.PopupMenu.Small' : 16974097, - 'TextAppearance.Holo.Widget.TabWidget' : 16974088, - 'TextAppearance.Holo.Widget.TextView' : 16974089, - 'TextAppearance.Holo.Widget.TextView.PopupMenu' : 16974090, - 'TextAppearance.Holo.Widget.TextView.SpinnerItem' : 16974093, - 'TextAppearance.Holo.WindowTitle' : 16974102, - 'TextAppearance.Inverse' : 16973887, - 'TextAppearance.Large' : 16973890, - 'TextAppearance.Large.Inverse' : 16973891, - 'TextAppearance.Material' : 16974317, - 'TextAppearance.Material.Body1' : 16974320, - 'TextAppearance.Material.Body2' : 16974319, - 'TextAppearance.Material.Button' : 16974318, - 'TextAppearance.Material.Caption' : 16974321, - 'TextAppearance.Material.DialogWindowTitle' : 16974322, - 'TextAppearance.Material.Display1' : 16974326, - 'TextAppearance.Material.Display2' : 16974325, - 'TextAppearance.Material.Display3' : 16974324, - 'TextAppearance.Material.Display4' : 16974323, - 'TextAppearance.Material.Headline' : 16974327, - 'TextAppearance.Material.Inverse' : 16974328, - 'TextAppearance.Material.Large' : 16974329, - 'TextAppearance.Material.Large.Inverse' : 16974330, - 'TextAppearance.Material.Medium' : 16974331, - 'TextAppearance.Material.Medium.Inverse' : 16974332, - 'TextAppearance.Material.Menu' : 16974333, - 'TextAppearance.Material.Notification' : 16974334, - 'TextAppearance.Material.Notification.Emphasis' : 16974335, - 'TextAppearance.Material.Notification.Info' : 16974336, - 'TextAppearance.Material.Notification.Line2' : 16974337, - 'TextAppearance.Material.Notification.Time' : 16974338, - 'TextAppearance.Material.Notification.Title' : 16974339, - 'TextAppearance.Material.SearchResult.Subtitle' : 16974340, - 'TextAppearance.Material.SearchResult.Title' : 16974341, - 'TextAppearance.Material.Small' : 16974342, - 'TextAppearance.Material.Small.Inverse' : 16974343, - 'TextAppearance.Material.Subhead' : 16974344, - 'TextAppearance.Material.Title' : 16974345, - 'TextAppearance.Material.Widget' : 16974347, - 'TextAppearance.Material.Widget.ActionBar.Menu' : 16974348, - 'TextAppearance.Material.Widget.ActionBar.Subtitle' : 16974349, - 'TextAppearance.Material.Widget.ActionBar.Subtitle.Inverse' : 16974350, - 'TextAppearance.Material.Widget.ActionBar.Title' : 16974351, - 'TextAppearance.Material.Widget.ActionBar.Title.Inverse' : 16974352, - 'TextAppearance.Material.Widget.ActionMode.Subtitle' : 16974353, - 'TextAppearance.Material.Widget.ActionMode.Subtitle.Inverse' : 16974354, - 'TextAppearance.Material.Widget.ActionMode.Title' : 16974355, - 'TextAppearance.Material.Widget.ActionMode.Title.Inverse' : 16974356, - 'TextAppearance.Material.Widget.Button' : 16974357, - 'TextAppearance.Material.Widget.DropDownHint' : 16974358, - 'TextAppearance.Material.Widget.DropDownItem' : 16974359, - 'TextAppearance.Material.Widget.EditText' : 16974360, - 'TextAppearance.Material.Widget.IconMenu.Item' : 16974361, - 'TextAppearance.Material.Widget.PopupMenu' : 16974362, - 'TextAppearance.Material.Widget.PopupMenu.Large' : 16974363, - 'TextAppearance.Material.Widget.PopupMenu.Small' : 16974364, - 'TextAppearance.Material.Widget.TabWidget' : 16974365, - 'TextAppearance.Material.Widget.TextView' : 16974366, - 'TextAppearance.Material.Widget.TextView.PopupMenu' : 16974367, - 'TextAppearance.Material.Widget.TextView.SpinnerItem' : 16974368, - 'TextAppearance.Material.Widget.Toolbar.Subtitle' : 16974369, - 'TextAppearance.Material.Widget.Toolbar.Title' : 16974370, - 'TextAppearance.Material.WindowTitle' : 16974346, - 'TextAppearance.Medium' : 16973892, - 'TextAppearance.Medium.Inverse' : 16973893, - 'TextAppearance.Small' : 16973894, - 'TextAppearance.Small.Inverse' : 16973895, - 'TextAppearance.StatusBar.EventContent' : 16973927, - 'TextAppearance.StatusBar.EventContent.Title' : 16973928, - 'TextAppearance.StatusBar.Icon' : 16973926, - 'TextAppearance.StatusBar.Title' : 16973925, - 'TextAppearance.SuggestionHighlight' : 16974104, - 'TextAppearance.Theme' : 16973888, - 'TextAppearance.Theme.Dialog' : 16973896, - 'TextAppearance.Widget' : 16973897, - 'TextAppearance.Widget.Button' : 16973898, - 'TextAppearance.Widget.DropDownHint' : 16973904, - 'TextAppearance.Widget.DropDownItem' : 16973905, - 'TextAppearance.Widget.EditText' : 16973900, - 'TextAppearance.Widget.IconMenu.Item' : 16973899, - 'TextAppearance.Widget.PopupMenu.Large' : 16973952, - 'TextAppearance.Widget.PopupMenu.Small' : 16973953, - 'TextAppearance.Widget.TabWidget' : 16973901, - 'TextAppearance.Widget.TextView' : 16973902, - 'TextAppearance.Widget.TextView.PopupMenu' : 16973903, - 'TextAppearance.Widget.TextView.SpinnerItem' : 16973906, - 'TextAppearance.WindowTitle' : 16973907, - 'Theme' : 16973829, - 'ThemeOverlay' : 16974407, - 'ThemeOverlay.Material' : 16974408, - 'ThemeOverlay.Material.ActionBar' : 16974409, - 'ThemeOverlay.Material.Dark' : 16974411, - 'ThemeOverlay.Material.Dark.ActionBar' : 16974412, - 'ThemeOverlay.Material.Light' : 16974410, - 'Theme.Black' : 16973832, - 'Theme.Black.NoTitleBar' : 16973833, - 'Theme.Black.NoTitleBar.Fullscreen' : 16973834, - 'Theme.DeviceDefault' : 16974120, - 'Theme.DeviceDefault.Dialog' : 16974126, - 'Theme.DeviceDefault.DialogWhenLarge' : 16974134, - 'Theme.DeviceDefault.DialogWhenLarge.NoActionBar' : 16974135, - 'Theme.DeviceDefault.Dialog.MinWidth' : 16974127, - 'Theme.DeviceDefault.Dialog.NoActionBar' : 16974128, - 'Theme.DeviceDefault.Dialog.NoActionBar.MinWidth' : 16974129, - 'Theme.DeviceDefault.InputMethod' : 16974142, - 'Theme.DeviceDefault.Light' : 16974123, - 'Theme.DeviceDefault.Light.DarkActionBar' : 16974143, - 'Theme.DeviceDefault.Light.Dialog' : 16974130, - 'Theme.DeviceDefault.Light.DialogWhenLarge' : 16974136, - 'Theme.DeviceDefault.Light.DialogWhenLarge.NoActionBar' : 16974137, - 'Theme.DeviceDefault.Light.Dialog.MinWidth' : 16974131, - 'Theme.DeviceDefault.Light.Dialog.NoActionBar' : 16974132, - 'Theme.DeviceDefault.Light.Dialog.NoActionBar.MinWidth' : 16974133, - 'Theme.DeviceDefault.Light.NoActionBar' : 16974124, - 'Theme.DeviceDefault.Light.NoActionBar.Fullscreen' : 16974125, - 'Theme.DeviceDefault.Light.NoActionBar.Overscan' : 16974304, - 'Theme.DeviceDefault.Light.NoActionBar.TranslucentDecor' : 16974308, - 'Theme.DeviceDefault.Light.Panel' : 16974139, - 'Theme.DeviceDefault.NoActionBar' : 16974121, - 'Theme.DeviceDefault.NoActionBar.Fullscreen' : 16974122, - 'Theme.DeviceDefault.NoActionBar.Overscan' : 16974303, - 'Theme.DeviceDefault.NoActionBar.TranslucentDecor' : 16974307, - 'Theme.DeviceDefault.Panel' : 16974138, - 'Theme.DeviceDefault.Settings' : 16974371, - 'Theme.DeviceDefault.Wallpaper' : 16974140, - 'Theme.DeviceDefault.Wallpaper.NoTitleBar' : 16974141, - 'Theme.Dialog' : 16973835, - 'Theme.Holo' : 16973931, - 'Theme.Holo.Dialog' : 16973935, - 'Theme.Holo.DialogWhenLarge' : 16973943, - 'Theme.Holo.DialogWhenLarge.NoActionBar' : 16973944, - 'Theme.Holo.Dialog.MinWidth' : 16973936, - 'Theme.Holo.Dialog.NoActionBar' : 16973937, - 'Theme.Holo.Dialog.NoActionBar.MinWidth' : 16973938, - 'Theme.Holo.InputMethod' : 16973951, - 'Theme.Holo.Light' : 16973934, - 'Theme.Holo.Light.DarkActionBar' : 16974105, - 'Theme.Holo.Light.Dialog' : 16973939, - 'Theme.Holo.Light.DialogWhenLarge' : 16973945, - 'Theme.Holo.Light.DialogWhenLarge.NoActionBar' : 16973946, - 'Theme.Holo.Light.Dialog.MinWidth' : 16973940, - 'Theme.Holo.Light.Dialog.NoActionBar' : 16973941, - 'Theme.Holo.Light.Dialog.NoActionBar.MinWidth' : 16973942, - 'Theme.Holo.Light.NoActionBar' : 16974064, - 'Theme.Holo.Light.NoActionBar.Fullscreen' : 16974065, - 'Theme.Holo.Light.NoActionBar.Overscan' : 16974302, - 'Theme.Holo.Light.NoActionBar.TranslucentDecor' : 16974306, - 'Theme.Holo.Light.Panel' : 16973948, - 'Theme.Holo.NoActionBar' : 16973932, - 'Theme.Holo.NoActionBar.Fullscreen' : 16973933, - 'Theme.Holo.NoActionBar.Overscan' : 16974301, - 'Theme.Holo.NoActionBar.TranslucentDecor' : 16974305, - 'Theme.Holo.Panel' : 16973947, - 'Theme.Holo.Wallpaper' : 16973949, - 'Theme.Holo.Wallpaper.NoTitleBar' : 16973950, - 'Theme.InputMethod' : 16973908, - 'Theme.Light' : 16973836, - 'Theme.Light.NoTitleBar' : 16973837, - 'Theme.Light.NoTitleBar.Fullscreen' : 16973838, - 'Theme.Light.Panel' : 16973914, - 'Theme.Light.WallpaperSettings' : 16973922, - 'Theme.Material' : 16974372, - 'Theme.Material.Dialog' : 16974373, - 'Theme.Material.DialogWhenLarge' : 16974379, - 'Theme.Material.DialogWhenLarge.NoActionBar' : 16974380, - 'Theme.Material.Dialog.Alert' : 16974374, - 'Theme.Material.Dialog.MinWidth' : 16974375, - 'Theme.Material.Dialog.NoActionBar' : 16974376, - 'Theme.Material.Dialog.NoActionBar.MinWidth' : 16974377, - 'Theme.Material.Dialog.Presentation' : 16974378, - 'Theme.Material.InputMethod' : 16974381, - 'Theme.Material.Light' : 16974391, - 'Theme.Material.Light.DarkActionBar' : 16974392, - 'Theme.Material.Light.Dialog' : 16974393, - 'Theme.Material.Light.DialogWhenLarge' : 16974399, - 'Theme.Material.Light.DialogWhenLarge.NoActionBar' : 16974400, - 'Theme.Material.Light.Dialog.Alert' : 16974394, - 'Theme.Material.Light.Dialog.MinWidth' : 16974395, - 'Theme.Material.Light.Dialog.NoActionBar' : 16974396, - 'Theme.Material.Light.Dialog.NoActionBar.MinWidth' : 16974397, - 'Theme.Material.Light.Dialog.Presentation' : 16974398, - 'Theme.Material.Light.NoActionBar' : 16974401, - 'Theme.Material.Light.NoActionBar.Fullscreen' : 16974402, - 'Theme.Material.Light.NoActionBar.Overscan' : 16974403, - 'Theme.Material.Light.NoActionBar.TranslucentDecor' : 16974404, - 'Theme.Material.Light.Panel' : 16974405, - 'Theme.Material.Light.Voice' : 16974406, - 'Theme.Material.NoActionBar' : 16974382, - 'Theme.Material.NoActionBar.Fullscreen' : 16974383, - 'Theme.Material.NoActionBar.Overscan' : 16974384, - 'Theme.Material.NoActionBar.TranslucentDecor' : 16974385, - 'Theme.Material.Panel' : 16974386, - 'Theme.Material.Settings' : 16974387, - 'Theme.Material.Voice' : 16974388, - 'Theme.Material.Wallpaper' : 16974389, - 'Theme.Material.Wallpaper.NoTitleBar' : 16974390, - 'Theme.NoDisplay' : 16973909, - 'Theme.NoTitleBar' : 16973830, - 'Theme.NoTitleBar.Fullscreen' : 16973831, - 'Theme.NoTitleBar.OverlayActionModes' : 16973930, - 'Theme.Panel' : 16973913, - 'Theme.Translucent' : 16973839, - 'Theme.Translucent.NoTitleBar' : 16973840, - 'Theme.Translucent.NoTitleBar.Fullscreen' : 16973841, - 'Theme.Wallpaper' : 16973918, - 'Theme.WallpaperSettings' : 16973921, - 'Theme.Wallpaper.NoTitleBar' : 16973919, - 'Theme.Wallpaper.NoTitleBar.Fullscreen' : 16973920, - 'Theme.WithActionBar' : 16973929, - 'Widget' : 16973842, - 'Widget.AbsListView' : 16973843, - 'Widget.ActionBar' : 16973954, - 'Widget.ActionBar.TabBar' : 16974068, - 'Widget.ActionBar.TabText' : 16974067, - 'Widget.ActionBar.TabView' : 16974066, - 'Widget.ActionButton' : 16973956, - 'Widget.ActionButton.CloseMode' : 16973960, - 'Widget.ActionButton.Overflow' : 16973959, - 'Widget.AutoCompleteTextView' : 16973863, - 'Widget.Button' : 16973844, - 'Widget.Button.Inset' : 16973845, - 'Widget.Button.Small' : 16973846, - 'Widget.Button.Toggle' : 16973847, - 'Widget.CalendarView' : 16974059, - 'Widget.CompoundButton' : 16973848, - 'Widget.CompoundButton.CheckBox' : 16973849, - 'Widget.CompoundButton.RadioButton' : 16973850, - 'Widget.CompoundButton.Star' : 16973851, - 'Widget.DatePicker' : 16974062, - 'Widget.DeviceDefault' : 16974144, - 'Widget.DeviceDefault.ActionBar' : 16974187, - 'Widget.DeviceDefault.ActionBar.Solid' : 16974195, - 'Widget.DeviceDefault.ActionBar.TabBar' : 16974194, - 'Widget.DeviceDefault.ActionBar.TabText' : 16974193, - 'Widget.DeviceDefault.ActionBar.TabView' : 16974192, - 'Widget.DeviceDefault.ActionButton' : 16974182, - 'Widget.DeviceDefault.ActionButton.CloseMode' : 16974186, - 'Widget.DeviceDefault.ActionButton.Overflow' : 16974183, - 'Widget.DeviceDefault.ActionButton.TextButton' : 16974184, - 'Widget.DeviceDefault.ActionMode' : 16974185, - 'Widget.DeviceDefault.AutoCompleteTextView' : 16974151, - 'Widget.DeviceDefault.Button' : 16974145, - 'Widget.DeviceDefault.Button.Borderless' : 16974188, - 'Widget.DeviceDefault.Button.Borderless.Small' : 16974149, - 'Widget.DeviceDefault.Button.Inset' : 16974147, - 'Widget.DeviceDefault.Button.Small' : 16974146, - 'Widget.DeviceDefault.Button.Toggle' : 16974148, - 'Widget.DeviceDefault.CalendarView' : 16974190, - 'Widget.DeviceDefault.CheckedTextView' : 16974299, - 'Widget.DeviceDefault.CompoundButton.CheckBox' : 16974152, - 'Widget.DeviceDefault.CompoundButton.RadioButton' : 16974169, - 'Widget.DeviceDefault.CompoundButton.Star' : 16974173, - 'Widget.DeviceDefault.DatePicker' : 16974191, - 'Widget.DeviceDefault.DropDownItem' : 16974177, - 'Widget.DeviceDefault.DropDownItem.Spinner' : 16974178, - 'Widget.DeviceDefault.EditText' : 16974154, - 'Widget.DeviceDefault.ExpandableListView' : 16974155, - 'Widget.DeviceDefault.FastScroll' : 16974313, - 'Widget.DeviceDefault.GridView' : 16974156, - 'Widget.DeviceDefault.HorizontalScrollView' : 16974171, - 'Widget.DeviceDefault.ImageButton' : 16974157, - 'Widget.DeviceDefault.Light' : 16974196, - 'Widget.DeviceDefault.Light.ActionBar' : 16974243, - 'Widget.DeviceDefault.Light.ActionBar.Solid' : 16974247, - 'Widget.DeviceDefault.Light.ActionBar.Solid.Inverse' : 16974248, - 'Widget.DeviceDefault.Light.ActionBar.TabBar' : 16974246, - 'Widget.DeviceDefault.Light.ActionBar.TabBar.Inverse' : 16974249, - 'Widget.DeviceDefault.Light.ActionBar.TabText' : 16974245, - 'Widget.DeviceDefault.Light.ActionBar.TabText.Inverse' : 16974251, - 'Widget.DeviceDefault.Light.ActionBar.TabView' : 16974244, - 'Widget.DeviceDefault.Light.ActionBar.TabView.Inverse' : 16974250, - 'Widget.DeviceDefault.Light.ActionButton' : 16974239, - 'Widget.DeviceDefault.Light.ActionButton.CloseMode' : 16974242, - 'Widget.DeviceDefault.Light.ActionButton.Overflow' : 16974240, - 'Widget.DeviceDefault.Light.ActionMode' : 16974241, - 'Widget.DeviceDefault.Light.ActionMode.Inverse' : 16974252, - 'Widget.DeviceDefault.Light.AutoCompleteTextView' : 16974203, - 'Widget.DeviceDefault.Light.Button' : 16974197, - 'Widget.DeviceDefault.Light.Button.Borderless.Small' : 16974201, - 'Widget.DeviceDefault.Light.Button.Inset' : 16974199, - 'Widget.DeviceDefault.Light.Button.Small' : 16974198, - 'Widget.DeviceDefault.Light.Button.Toggle' : 16974200, - 'Widget.DeviceDefault.Light.CalendarView' : 16974238, - 'Widget.DeviceDefault.Light.CheckedTextView' : 16974300, - 'Widget.DeviceDefault.Light.CompoundButton.CheckBox' : 16974204, - 'Widget.DeviceDefault.Light.CompoundButton.RadioButton' : 16974224, - 'Widget.DeviceDefault.Light.CompoundButton.Star' : 16974228, - 'Widget.DeviceDefault.Light.DropDownItem' : 16974232, - 'Widget.DeviceDefault.Light.DropDownItem.Spinner' : 16974233, - 'Widget.DeviceDefault.Light.EditText' : 16974206, - 'Widget.DeviceDefault.Light.ExpandableListView' : 16974207, - 'Widget.DeviceDefault.Light.FastScroll' : 16974315, - 'Widget.DeviceDefault.Light.GridView' : 16974208, - 'Widget.DeviceDefault.Light.HorizontalScrollView' : 16974226, - 'Widget.DeviceDefault.Light.ImageButton' : 16974209, - 'Widget.DeviceDefault.Light.ListPopupWindow' : 16974235, - 'Widget.DeviceDefault.Light.ListView' : 16974210, - 'Widget.DeviceDefault.Light.ListView.DropDown' : 16974205, - 'Widget.DeviceDefault.Light.MediaRouteButton' : 16974296, - 'Widget.DeviceDefault.Light.PopupMenu' : 16974236, - 'Widget.DeviceDefault.Light.PopupWindow' : 16974211, - 'Widget.DeviceDefault.Light.ProgressBar' : 16974212, - 'Widget.DeviceDefault.Light.ProgressBar.Horizontal' : 16974213, - 'Widget.DeviceDefault.Light.ProgressBar.Inverse' : 16974217, - 'Widget.DeviceDefault.Light.ProgressBar.Large' : 16974216, - 'Widget.DeviceDefault.Light.ProgressBar.Large.Inverse' : 16974219, - 'Widget.DeviceDefault.Light.ProgressBar.Small' : 16974214, - 'Widget.DeviceDefault.Light.ProgressBar.Small.Inverse' : 16974218, - 'Widget.DeviceDefault.Light.ProgressBar.Small.Title' : 16974215, - 'Widget.DeviceDefault.Light.RatingBar' : 16974221, - 'Widget.DeviceDefault.Light.RatingBar.Indicator' : 16974222, - 'Widget.DeviceDefault.Light.RatingBar.Small' : 16974223, - 'Widget.DeviceDefault.Light.ScrollView' : 16974225, - 'Widget.DeviceDefault.Light.SeekBar' : 16974220, - 'Widget.DeviceDefault.Light.Spinner' : 16974227, - 'Widget.DeviceDefault.Light.StackView' : 16974316, - 'Widget.DeviceDefault.Light.Tab' : 16974237, - 'Widget.DeviceDefault.Light.TabWidget' : 16974229, - 'Widget.DeviceDefault.Light.TextView' : 16974202, - 'Widget.DeviceDefault.Light.TextView.SpinnerItem' : 16974234, - 'Widget.DeviceDefault.Light.WebTextView' : 16974230, - 'Widget.DeviceDefault.Light.WebView' : 16974231, - 'Widget.DeviceDefault.ListPopupWindow' : 16974180, - 'Widget.DeviceDefault.ListView' : 16974158, - 'Widget.DeviceDefault.ListView.DropDown' : 16974153, - 'Widget.DeviceDefault.MediaRouteButton' : 16974295, - 'Widget.DeviceDefault.PopupMenu' : 16974181, - 'Widget.DeviceDefault.PopupWindow' : 16974159, - 'Widget.DeviceDefault.ProgressBar' : 16974160, - 'Widget.DeviceDefault.ProgressBar.Horizontal' : 16974161, - 'Widget.DeviceDefault.ProgressBar.Large' : 16974164, - 'Widget.DeviceDefault.ProgressBar.Small' : 16974162, - 'Widget.DeviceDefault.ProgressBar.Small.Title' : 16974163, - 'Widget.DeviceDefault.RatingBar' : 16974166, - 'Widget.DeviceDefault.RatingBar.Indicator' : 16974167, - 'Widget.DeviceDefault.RatingBar.Small' : 16974168, - 'Widget.DeviceDefault.ScrollView' : 16974170, - 'Widget.DeviceDefault.SeekBar' : 16974165, - 'Widget.DeviceDefault.Spinner' : 16974172, - 'Widget.DeviceDefault.StackView' : 16974314, - 'Widget.DeviceDefault.Tab' : 16974189, - 'Widget.DeviceDefault.TabWidget' : 16974174, - 'Widget.DeviceDefault.TextView' : 16974150, - 'Widget.DeviceDefault.TextView.SpinnerItem' : 16974179, - 'Widget.DeviceDefault.WebTextView' : 16974175, - 'Widget.DeviceDefault.WebView' : 16974176, - 'Widget.DropDownItem' : 16973867, - 'Widget.DropDownItem.Spinner' : 16973868, - 'Widget.EditText' : 16973859, - 'Widget.ExpandableListView' : 16973860, - 'Widget.FastScroll' : 16974309, - 'Widget.FragmentBreadCrumbs' : 16973961, - 'Widget.Gallery' : 16973877, - 'Widget.GridView' : 16973874, - 'Widget.Holo' : 16973962, - 'Widget.Holo.ActionBar' : 16974004, - 'Widget.Holo.ActionBar.Solid' : 16974113, - 'Widget.Holo.ActionBar.TabBar' : 16974071, - 'Widget.Holo.ActionBar.TabText' : 16974070, - 'Widget.Holo.ActionBar.TabView' : 16974069, - 'Widget.Holo.ActionButton' : 16973999, - 'Widget.Holo.ActionButton.CloseMode' : 16974003, - 'Widget.Holo.ActionButton.Overflow' : 16974000, - 'Widget.Holo.ActionButton.TextButton' : 16974001, - 'Widget.Holo.ActionMode' : 16974002, - 'Widget.Holo.AutoCompleteTextView' : 16973968, - 'Widget.Holo.Button' : 16973963, - 'Widget.Holo.Button.Borderless' : 16974050, - 'Widget.Holo.Button.Borderless.Small' : 16974106, - 'Widget.Holo.Button.Inset' : 16973965, - 'Widget.Holo.Button.Small' : 16973964, - 'Widget.Holo.Button.Toggle' : 16973966, - 'Widget.Holo.CalendarView' : 16974060, - 'Widget.Holo.CheckedTextView' : 16974297, - 'Widget.Holo.CompoundButton.CheckBox' : 16973969, - 'Widget.Holo.CompoundButton.RadioButton' : 16973986, - 'Widget.Holo.CompoundButton.Star' : 16973990, - 'Widget.Holo.DatePicker' : 16974063, - 'Widget.Holo.DropDownItem' : 16973994, - 'Widget.Holo.DropDownItem.Spinner' : 16973995, - 'Widget.Holo.EditText' : 16973971, - 'Widget.Holo.ExpandableListView' : 16973972, - 'Widget.Holo.GridView' : 16973973, - 'Widget.Holo.HorizontalScrollView' : 16973988, - 'Widget.Holo.ImageButton' : 16973974, - 'Widget.Holo.Light' : 16974005, - 'Widget.Holo.Light.ActionBar' : 16974049, - 'Widget.Holo.Light.ActionBar.Solid' : 16974114, - 'Widget.Holo.Light.ActionBar.Solid.Inverse' : 16974115, - 'Widget.Holo.Light.ActionBar.TabBar' : 16974074, - 'Widget.Holo.Light.ActionBar.TabBar.Inverse' : 16974116, - 'Widget.Holo.Light.ActionBar.TabText' : 16974073, - 'Widget.Holo.Light.ActionBar.TabText.Inverse' : 16974118, - 'Widget.Holo.Light.ActionBar.TabView' : 16974072, - 'Widget.Holo.Light.ActionBar.TabView.Inverse' : 16974117, - 'Widget.Holo.Light.ActionButton' : 16974045, - 'Widget.Holo.Light.ActionButton.CloseMode' : 16974048, - 'Widget.Holo.Light.ActionButton.Overflow' : 16974046, - 'Widget.Holo.Light.ActionMode' : 16974047, - 'Widget.Holo.Light.ActionMode.Inverse' : 16974119, - 'Widget.Holo.Light.AutoCompleteTextView' : 16974011, - 'Widget.Holo.Light.Button' : 16974006, - 'Widget.Holo.Light.Button.Borderless.Small' : 16974107, - 'Widget.Holo.Light.Button.Inset' : 16974008, - 'Widget.Holo.Light.Button.Small' : 16974007, - 'Widget.Holo.Light.Button.Toggle' : 16974009, - 'Widget.Holo.Light.CalendarView' : 16974061, - 'Widget.Holo.Light.CheckedTextView' : 16974298, - 'Widget.Holo.Light.CompoundButton.CheckBox' : 16974012, - 'Widget.Holo.Light.CompoundButton.RadioButton' : 16974032, - 'Widget.Holo.Light.CompoundButton.Star' : 16974036, - 'Widget.Holo.Light.DropDownItem' : 16974040, - 'Widget.Holo.Light.DropDownItem.Spinner' : 16974041, - 'Widget.Holo.Light.EditText' : 16974014, - 'Widget.Holo.Light.ExpandableListView' : 16974015, - 'Widget.Holo.Light.GridView' : 16974016, - 'Widget.Holo.Light.HorizontalScrollView' : 16974034, - 'Widget.Holo.Light.ImageButton' : 16974017, - 'Widget.Holo.Light.ListPopupWindow' : 16974043, - 'Widget.Holo.Light.ListView' : 16974018, - 'Widget.Holo.Light.ListView.DropDown' : 16974013, - 'Widget.Holo.Light.MediaRouteButton' : 16974294, - 'Widget.Holo.Light.PopupMenu' : 16974044, - 'Widget.Holo.Light.PopupWindow' : 16974019, - 'Widget.Holo.Light.ProgressBar' : 16974020, - 'Widget.Holo.Light.ProgressBar.Horizontal' : 16974021, - 'Widget.Holo.Light.ProgressBar.Inverse' : 16974025, - 'Widget.Holo.Light.ProgressBar.Large' : 16974024, - 'Widget.Holo.Light.ProgressBar.Large.Inverse' : 16974027, - 'Widget.Holo.Light.ProgressBar.Small' : 16974022, - 'Widget.Holo.Light.ProgressBar.Small.Inverse' : 16974026, - 'Widget.Holo.Light.ProgressBar.Small.Title' : 16974023, - 'Widget.Holo.Light.RatingBar' : 16974029, - 'Widget.Holo.Light.RatingBar.Indicator' : 16974030, - 'Widget.Holo.Light.RatingBar.Small' : 16974031, - 'Widget.Holo.Light.ScrollView' : 16974033, - 'Widget.Holo.Light.SeekBar' : 16974028, - 'Widget.Holo.Light.Spinner' : 16974035, - 'Widget.Holo.Light.Tab' : 16974052, - 'Widget.Holo.Light.TabWidget' : 16974037, - 'Widget.Holo.Light.TextView' : 16974010, - 'Widget.Holo.Light.TextView.SpinnerItem' : 16974042, - 'Widget.Holo.Light.WebTextView' : 16974038, - 'Widget.Holo.Light.WebView' : 16974039, - 'Widget.Holo.ListPopupWindow' : 16973997, - 'Widget.Holo.ListView' : 16973975, - 'Widget.Holo.ListView.DropDown' : 16973970, - 'Widget.Holo.MediaRouteButton' : 16974293, - 'Widget.Holo.PopupMenu' : 16973998, - 'Widget.Holo.PopupWindow' : 16973976, - 'Widget.Holo.ProgressBar' : 16973977, - 'Widget.Holo.ProgressBar.Horizontal' : 16973978, - 'Widget.Holo.ProgressBar.Large' : 16973981, - 'Widget.Holo.ProgressBar.Small' : 16973979, - 'Widget.Holo.ProgressBar.Small.Title' : 16973980, - 'Widget.Holo.RatingBar' : 16973983, - 'Widget.Holo.RatingBar.Indicator' : 16973984, - 'Widget.Holo.RatingBar.Small' : 16973985, - 'Widget.Holo.ScrollView' : 16973987, - 'Widget.Holo.SeekBar' : 16973982, - 'Widget.Holo.Spinner' : 16973989, - 'Widget.Holo.Tab' : 16974051, - 'Widget.Holo.TabWidget' : 16973991, - 'Widget.Holo.TextView' : 16973967, - 'Widget.Holo.TextView.SpinnerItem' : 16973996, - 'Widget.Holo.WebTextView' : 16973992, - 'Widget.Holo.WebView' : 16973993, - 'Widget.ImageButton' : 16973862, - 'Widget.ImageWell' : 16973861, - 'Widget.KeyboardView' : 16973911, - 'Widget.ListPopupWindow' : 16973957, - 'Widget.ListView' : 16973870, - 'Widget.ListView.DropDown' : 16973872, - 'Widget.ListView.Menu' : 16973873, - 'Widget.ListView.White' : 16973871, - 'Widget.Material' : 16974413, - 'Widget.Material.ActionBar' : 16974414, - 'Widget.Material.ActionBar.Solid' : 16974415, - 'Widget.Material.ActionBar.TabBar' : 16974416, - 'Widget.Material.ActionBar.TabText' : 16974417, - 'Widget.Material.ActionBar.TabView' : 16974418, - 'Widget.Material.ActionButton' : 16974419, - 'Widget.Material.ActionButton.CloseMode' : 16974420, - 'Widget.Material.ActionButton.Overflow' : 16974421, - 'Widget.Material.ActionMode' : 16974422, - 'Widget.Material.AutoCompleteTextView' : 16974423, - 'Widget.Material.Button' : 16974424, - 'Widget.Material.ButtonBar' : 16974431, - 'Widget.Material.ButtonBar.AlertDialog' : 16974432, - 'Widget.Material.Button.Borderless' : 16974425, - 'Widget.Material.Button.Borderless.Colored' : 16974426, - 'Widget.Material.Button.Borderless.Small' : 16974427, - 'Widget.Material.Button.Inset' : 16974428, - 'Widget.Material.Button.Small' : 16974429, - 'Widget.Material.Button.Toggle' : 16974430, - 'Widget.Material.CalendarView' : 16974433, - 'Widget.Material.CheckedTextView' : 16974434, - 'Widget.Material.CompoundButton.CheckBox' : 16974435, - 'Widget.Material.CompoundButton.RadioButton' : 16974436, - 'Widget.Material.CompoundButton.Star' : 16974437, - 'Widget.Material.DatePicker' : 16974438, - 'Widget.Material.DropDownItem' : 16974439, - 'Widget.Material.DropDownItem.Spinner' : 16974440, - 'Widget.Material.EditText' : 16974441, - 'Widget.Material.ExpandableListView' : 16974442, - 'Widget.Material.FastScroll' : 16974443, - 'Widget.Material.GridView' : 16974444, - 'Widget.Material.HorizontalScrollView' : 16974445, - 'Widget.Material.ImageButton' : 16974446, - 'Widget.Material.Light' : 16974478, - 'Widget.Material.Light.ActionBar' : 16974479, - 'Widget.Material.Light.ActionBar.Solid' : 16974480, - 'Widget.Material.Light.ActionBar.TabBar' : 16974481, - 'Widget.Material.Light.ActionBar.TabText' : 16974482, - 'Widget.Material.Light.ActionBar.TabView' : 16974483, - 'Widget.Material.Light.ActionButton' : 16974484, - 'Widget.Material.Light.ActionButton.CloseMode' : 16974485, - 'Widget.Material.Light.ActionButton.Overflow' : 16974486, - 'Widget.Material.Light.ActionMode' : 16974487, - 'Widget.Material.Light.AutoCompleteTextView' : 16974488, - 'Widget.Material.Light.Button' : 16974489, - 'Widget.Material.Light.ButtonBar' : 16974496, - 'Widget.Material.Light.ButtonBar.AlertDialog' : 16974497, - 'Widget.Material.Light.Button.Borderless' : 16974490, - 'Widget.Material.Light.Button.Borderless.Colored' : 16974491, - 'Widget.Material.Light.Button.Borderless.Small' : 16974492, - 'Widget.Material.Light.Button.Inset' : 16974493, - 'Widget.Material.Light.Button.Small' : 16974494, - 'Widget.Material.Light.Button.Toggle' : 16974495, - 'Widget.Material.Light.CalendarView' : 16974498, - 'Widget.Material.Light.CheckedTextView' : 16974499, - 'Widget.Material.Light.CompoundButton.CheckBox' : 16974500, - 'Widget.Material.Light.CompoundButton.RadioButton' : 16974501, - 'Widget.Material.Light.CompoundButton.Star' : 16974502, - 'Widget.Material.Light.DatePicker' : 16974503, - 'Widget.Material.Light.DropDownItem' : 16974504, - 'Widget.Material.Light.DropDownItem.Spinner' : 16974505, - 'Widget.Material.Light.EditText' : 16974506, - 'Widget.Material.Light.ExpandableListView' : 16974507, - 'Widget.Material.Light.FastScroll' : 16974508, - 'Widget.Material.Light.GridView' : 16974509, - 'Widget.Material.Light.HorizontalScrollView' : 16974510, - 'Widget.Material.Light.ImageButton' : 16974511, - 'Widget.Material.Light.ListPopupWindow' : 16974512, - 'Widget.Material.Light.ListView' : 16974513, - 'Widget.Material.Light.ListView.DropDown' : 16974514, - 'Widget.Material.Light.MediaRouteButton' : 16974515, - 'Widget.Material.Light.PopupMenu' : 16974516, - 'Widget.Material.Light.PopupMenu.Overflow' : 16974517, - 'Widget.Material.Light.PopupWindow' : 16974518, - 'Widget.Material.Light.ProgressBar' : 16974519, - 'Widget.Material.Light.ProgressBar.Horizontal' : 16974520, - 'Widget.Material.Light.ProgressBar.Inverse' : 16974521, - 'Widget.Material.Light.ProgressBar.Large' : 16974522, - 'Widget.Material.Light.ProgressBar.Large.Inverse' : 16974523, - 'Widget.Material.Light.ProgressBar.Small' : 16974524, - 'Widget.Material.Light.ProgressBar.Small.Inverse' : 16974525, - 'Widget.Material.Light.ProgressBar.Small.Title' : 16974526, - 'Widget.Material.Light.RatingBar' : 16974527, - 'Widget.Material.Light.RatingBar.Indicator' : 16974528, - 'Widget.Material.Light.RatingBar.Small' : 16974529, - 'Widget.Material.Light.ScrollView' : 16974530, - 'Widget.Material.Light.SearchView' : 16974531, - 'Widget.Material.Light.SeekBar' : 16974532, - 'Widget.Material.Light.SegmentedButton' : 16974533, - 'Widget.Material.Light.Spinner' : 16974535, - 'Widget.Material.Light.Spinner.Underlined' : 16974536, - 'Widget.Material.Light.StackView' : 16974534, - 'Widget.Material.Light.Tab' : 16974537, - 'Widget.Material.Light.TabWidget' : 16974538, - 'Widget.Material.Light.TextView' : 16974539, - 'Widget.Material.Light.TextView.SpinnerItem' : 16974540, - 'Widget.Material.Light.TimePicker' : 16974541, - 'Widget.Material.Light.WebTextView' : 16974542, - 'Widget.Material.Light.WebView' : 16974543, - 'Widget.Material.ListPopupWindow' : 16974447, - 'Widget.Material.ListView' : 16974448, - 'Widget.Material.ListView.DropDown' : 16974449, - 'Widget.Material.MediaRouteButton' : 16974450, - 'Widget.Material.PopupMenu' : 16974451, - 'Widget.Material.PopupMenu.Overflow' : 16974452, - 'Widget.Material.PopupWindow' : 16974453, - 'Widget.Material.ProgressBar' : 16974454, - 'Widget.Material.ProgressBar.Horizontal' : 16974455, - 'Widget.Material.ProgressBar.Large' : 16974456, - 'Widget.Material.ProgressBar.Small' : 16974457, - 'Widget.Material.ProgressBar.Small.Title' : 16974458, - 'Widget.Material.RatingBar' : 16974459, - 'Widget.Material.RatingBar.Indicator' : 16974460, - 'Widget.Material.RatingBar.Small' : 16974461, - 'Widget.Material.ScrollView' : 16974462, - 'Widget.Material.SearchView' : 16974463, - 'Widget.Material.SeekBar' : 16974464, - 'Widget.Material.SegmentedButton' : 16974465, - 'Widget.Material.Spinner' : 16974467, - 'Widget.Material.Spinner.Underlined' : 16974468, - 'Widget.Material.StackView' : 16974466, - 'Widget.Material.Tab' : 16974469, - 'Widget.Material.TabWidget' : 16974470, - 'Widget.Material.TextView' : 16974471, - 'Widget.Material.TextView.SpinnerItem' : 16974472, - 'Widget.Material.TimePicker' : 16974473, - 'Widget.Material.Toolbar' : 16974474, - 'Widget.Material.Toolbar.Button.Navigation' : 16974475, - 'Widget.Material.WebTextView' : 16974476, - 'Widget.Material.WebView' : 16974477, - 'Widget.PopupMenu' : 16973958, - 'Widget.PopupWindow' : 16973878, - 'Widget.ProgressBar' : 16973852, - 'Widget.ProgressBar.Horizontal' : 16973855, - 'Widget.ProgressBar.Inverse' : 16973915, - 'Widget.ProgressBar.Large' : 16973853, - 'Widget.ProgressBar.Large.Inverse' : 16973916, - 'Widget.ProgressBar.Small' : 16973854, - 'Widget.ProgressBar.Small.Inverse' : 16973917, - 'Widget.RatingBar' : 16973857, - 'Widget.ScrollView' : 16973869, - 'Widget.SeekBar' : 16973856, - 'Widget.Spinner' : 16973864, - 'Widget.Spinner.DropDown' : 16973955, - 'Widget.StackView' : 16974310, - 'Widget.TabWidget' : 16973876, - 'Widget.TextView' : 16973858, - 'Widget.TextView.PopupMenu' : 16973865, - 'Widget.TextView.SpinnerItem' : 16973866, - 'Widget.Toolbar' : 16974311, - 'Widget.Toolbar.Button.Navigation' : 16974312, - 'Widget.WebView' : 16973875, -}, + 'Animation': 16973824, + 'Animation.Activity': 16973825, + 'Animation.Dialog': 16973826, + 'Animation.InputMethod': 16973910, + 'Animation.Toast': 16973828, + 'Animation.Translucent': 16973827, + 'DeviceDefault.ButtonBar': 16974287, + 'DeviceDefault.ButtonBar.AlertDialog': 16974288, + 'DeviceDefault.Light.ButtonBar': 16974290, + 'DeviceDefault.Light.ButtonBar.AlertDialog': 16974291, + 'DeviceDefault.Light.SegmentedButton': 16974292, + 'DeviceDefault.SegmentedButton': 16974289, + 'Holo.ButtonBar': 16974053, + 'Holo.ButtonBar.AlertDialog': 16974055, + 'Holo.Light.ButtonBar': 16974054, + 'Holo.Light.ButtonBar.AlertDialog': 16974056, + 'Holo.Light.SegmentedButton': 16974058, + 'Holo.SegmentedButton': 16974057, + 'MediaButton': 16973879, + 'MediaButton.Ffwd': 16973883, + 'MediaButton.Next': 16973881, + 'MediaButton.Pause': 16973885, + 'MediaButton.Play': 16973882, + 'MediaButton.Previous': 16973880, + 'MediaButton.Rew': 16973884, + 'TextAppearance': 16973886, + 'TextAppearance.DeviceDefault': 16974253, + 'TextAppearance.DeviceDefault.DialogWindowTitle': 16974264, + 'TextAppearance.DeviceDefault.Inverse': 16974254, + 'TextAppearance.DeviceDefault.Large': 16974255, + 'TextAppearance.DeviceDefault.Large.Inverse': 16974256, + 'TextAppearance.DeviceDefault.Medium': 16974257, + 'TextAppearance.DeviceDefault.Medium.Inverse': 16974258, + 'TextAppearance.DeviceDefault.SearchResult.Subtitle': 16974262, + 'TextAppearance.DeviceDefault.SearchResult.Title': 16974261, + 'TextAppearance.DeviceDefault.Small': 16974259, + 'TextAppearance.DeviceDefault.Small.Inverse': 16974260, + 'TextAppearance.DeviceDefault.Widget': 16974265, + 'TextAppearance.DeviceDefault.Widget.ActionBar.Menu': 16974286, + 'TextAppearance.DeviceDefault.Widget.ActionBar.Subtitle': 16974279, + 'TextAppearance.DeviceDefault.Widget.ActionBar.Subtitle.Inverse': 16974283, + 'TextAppearance.DeviceDefault.Widget.ActionBar.Title': 16974278, + 'TextAppearance.DeviceDefault.Widget.ActionBar.Title.Inverse': 16974282, + 'TextAppearance.DeviceDefault.Widget.ActionMode.Subtitle': 16974281, + 'TextAppearance.DeviceDefault.Widget.ActionMode.Subtitle.Inverse': 16974285, + 'TextAppearance.DeviceDefault.Widget.ActionMode.Title': 16974280, + 'TextAppearance.DeviceDefault.Widget.ActionMode.Title.Inverse': 16974284, + 'TextAppearance.DeviceDefault.Widget.Button': 16974266, + 'TextAppearance.DeviceDefault.Widget.DropDownHint': 16974271, + 'TextAppearance.DeviceDefault.Widget.DropDownItem': 16974272, + 'TextAppearance.DeviceDefault.Widget.EditText': 16974274, + 'TextAppearance.DeviceDefault.Widget.IconMenu.Item': 16974267, + 'TextAppearance.DeviceDefault.Widget.PopupMenu': 16974275, + 'TextAppearance.DeviceDefault.Widget.PopupMenu.Large': 16974276, + 'TextAppearance.DeviceDefault.Widget.PopupMenu.Small': 16974277, + 'TextAppearance.DeviceDefault.Widget.TabWidget': 16974268, + 'TextAppearance.DeviceDefault.Widget.TextView': 16974269, + 'TextAppearance.DeviceDefault.Widget.TextView.PopupMenu': 16974270, + 'TextAppearance.DeviceDefault.Widget.TextView.SpinnerItem': 16974273, + 'TextAppearance.DeviceDefault.WindowTitle': 16974263, + 'TextAppearance.DialogWindowTitle': 16973889, + 'TextAppearance.Holo': 16974075, + 'TextAppearance.Holo.DialogWindowTitle': 16974103, + 'TextAppearance.Holo.Inverse': 16974076, + 'TextAppearance.Holo.Large': 16974077, + 'TextAppearance.Holo.Large.Inverse': 16974078, + 'TextAppearance.Holo.Medium': 16974079, + 'TextAppearance.Holo.Medium.Inverse': 16974080, + 'TextAppearance.Holo.SearchResult.Subtitle': 16974084, + 'TextAppearance.Holo.SearchResult.Title': 16974083, + 'TextAppearance.Holo.Small': 16974081, + 'TextAppearance.Holo.Small.Inverse': 16974082, + 'TextAppearance.Holo.Widget': 16974085, + 'TextAppearance.Holo.Widget.ActionBar.Menu': 16974112, + 'TextAppearance.Holo.Widget.ActionBar.Subtitle': 16974099, + 'TextAppearance.Holo.Widget.ActionBar.Subtitle.Inverse': 16974109, + 'TextAppearance.Holo.Widget.ActionBar.Title': 16974098, + 'TextAppearance.Holo.Widget.ActionBar.Title.Inverse': 16974108, + 'TextAppearance.Holo.Widget.ActionMode.Subtitle': 16974101, + 'TextAppearance.Holo.Widget.ActionMode.Subtitle.Inverse': 16974111, + 'TextAppearance.Holo.Widget.ActionMode.Title': 16974100, + 'TextAppearance.Holo.Widget.ActionMode.Title.Inverse': 16974110, + 'TextAppearance.Holo.Widget.Button': 16974086, + 'TextAppearance.Holo.Widget.DropDownHint': 16974091, + 'TextAppearance.Holo.Widget.DropDownItem': 16974092, + 'TextAppearance.Holo.Widget.EditText': 16974094, + 'TextAppearance.Holo.Widget.IconMenu.Item': 16974087, + 'TextAppearance.Holo.Widget.PopupMenu': 16974095, + 'TextAppearance.Holo.Widget.PopupMenu.Large': 16974096, + 'TextAppearance.Holo.Widget.PopupMenu.Small': 16974097, + 'TextAppearance.Holo.Widget.TabWidget': 16974088, + 'TextAppearance.Holo.Widget.TextView': 16974089, + 'TextAppearance.Holo.Widget.TextView.PopupMenu': 16974090, + 'TextAppearance.Holo.Widget.TextView.SpinnerItem': 16974093, + 'TextAppearance.Holo.WindowTitle': 16974102, + 'TextAppearance.Inverse': 16973887, + 'TextAppearance.Large': 16973890, + 'TextAppearance.Large.Inverse': 16973891, + 'TextAppearance.Material': 16974317, + 'TextAppearance.Material.Body1': 16974320, + 'TextAppearance.Material.Body2': 16974319, + 'TextAppearance.Material.Button': 16974318, + 'TextAppearance.Material.Caption': 16974321, + 'TextAppearance.Material.DialogWindowTitle': 16974322, + 'TextAppearance.Material.Display1': 16974326, + 'TextAppearance.Material.Display2': 16974325, + 'TextAppearance.Material.Display3': 16974324, + 'TextAppearance.Material.Display4': 16974323, + 'TextAppearance.Material.Headline': 16974327, + 'TextAppearance.Material.Inverse': 16974328, + 'TextAppearance.Material.Large': 16974329, + 'TextAppearance.Material.Large.Inverse': 16974330, + 'TextAppearance.Material.Medium': 16974331, + 'TextAppearance.Material.Medium.Inverse': 16974332, + 'TextAppearance.Material.Menu': 16974333, + 'TextAppearance.Material.Notification': 16974334, + 'TextAppearance.Material.Notification.Emphasis': 16974335, + 'TextAppearance.Material.Notification.Info': 16974336, + 'TextAppearance.Material.Notification.Line2': 16974337, + 'TextAppearance.Material.Notification.Time': 16974338, + 'TextAppearance.Material.Notification.Title': 16974339, + 'TextAppearance.Material.SearchResult.Subtitle': 16974340, + 'TextAppearance.Material.SearchResult.Title': 16974341, + 'TextAppearance.Material.Small': 16974342, + 'TextAppearance.Material.Small.Inverse': 16974343, + 'TextAppearance.Material.Subhead': 16974344, + 'TextAppearance.Material.Title': 16974345, + 'TextAppearance.Material.Widget': 16974347, + 'TextAppearance.Material.Widget.ActionBar.Menu': 16974348, + 'TextAppearance.Material.Widget.ActionBar.Subtitle': 16974349, + 'TextAppearance.Material.Widget.ActionBar.Subtitle.Inverse': 16974350, + 'TextAppearance.Material.Widget.ActionBar.Title': 16974351, + 'TextAppearance.Material.Widget.ActionBar.Title.Inverse': 16974352, + 'TextAppearance.Material.Widget.ActionMode.Subtitle': 16974353, + 'TextAppearance.Material.Widget.ActionMode.Subtitle.Inverse': 16974354, + 'TextAppearance.Material.Widget.ActionMode.Title': 16974355, + 'TextAppearance.Material.Widget.ActionMode.Title.Inverse': 16974356, + 'TextAppearance.Material.Widget.Button': 16974357, + 'TextAppearance.Material.Widget.DropDownHint': 16974358, + 'TextAppearance.Material.Widget.DropDownItem': 16974359, + 'TextAppearance.Material.Widget.EditText': 16974360, + 'TextAppearance.Material.Widget.IconMenu.Item': 16974361, + 'TextAppearance.Material.Widget.PopupMenu': 16974362, + 'TextAppearance.Material.Widget.PopupMenu.Large': 16974363, + 'TextAppearance.Material.Widget.PopupMenu.Small': 16974364, + 'TextAppearance.Material.Widget.TabWidget': 16974365, + 'TextAppearance.Material.Widget.TextView': 16974366, + 'TextAppearance.Material.Widget.TextView.PopupMenu': 16974367, + 'TextAppearance.Material.Widget.TextView.SpinnerItem': 16974368, + 'TextAppearance.Material.Widget.Toolbar.Subtitle': 16974369, + 'TextAppearance.Material.Widget.Toolbar.Title': 16974370, + 'TextAppearance.Material.WindowTitle': 16974346, + 'TextAppearance.Medium': 16973892, + 'TextAppearance.Medium.Inverse': 16973893, + 'TextAppearance.Small': 16973894, + 'TextAppearance.Small.Inverse': 16973895, + 'TextAppearance.StatusBar.EventContent': 16973927, + 'TextAppearance.StatusBar.EventContent.Title': 16973928, + 'TextAppearance.StatusBar.Icon': 16973926, + 'TextAppearance.StatusBar.Title': 16973925, + 'TextAppearance.SuggestionHighlight': 16974104, + 'TextAppearance.Theme': 16973888, + 'TextAppearance.Theme.Dialog': 16973896, + 'TextAppearance.Widget': 16973897, + 'TextAppearance.Widget.Button': 16973898, + 'TextAppearance.Widget.DropDownHint': 16973904, + 'TextAppearance.Widget.DropDownItem': 16973905, + 'TextAppearance.Widget.EditText': 16973900, + 'TextAppearance.Widget.IconMenu.Item': 16973899, + 'TextAppearance.Widget.PopupMenu.Large': 16973952, + 'TextAppearance.Widget.PopupMenu.Small': 16973953, + 'TextAppearance.Widget.TabWidget': 16973901, + 'TextAppearance.Widget.TextView': 16973902, + 'TextAppearance.Widget.TextView.PopupMenu': 16973903, + 'TextAppearance.Widget.TextView.SpinnerItem': 16973906, + 'TextAppearance.WindowTitle': 16973907, + 'Theme': 16973829, + 'ThemeOverlay': 16974407, + 'ThemeOverlay.Material': 16974408, + 'ThemeOverlay.Material.ActionBar': 16974409, + 'ThemeOverlay.Material.Dark': 16974411, + 'ThemeOverlay.Material.Dark.ActionBar': 16974412, + 'ThemeOverlay.Material.Light': 16974410, + 'Theme.Black': 16973832, + 'Theme.Black.NoTitleBar': 16973833, + 'Theme.Black.NoTitleBar.Fullscreen': 16973834, + 'Theme.DeviceDefault': 16974120, + 'Theme.DeviceDefault.Dialog': 16974126, + 'Theme.DeviceDefault.DialogWhenLarge': 16974134, + 'Theme.DeviceDefault.DialogWhenLarge.NoActionBar': 16974135, + 'Theme.DeviceDefault.Dialog.MinWidth': 16974127, + 'Theme.DeviceDefault.Dialog.NoActionBar': 16974128, + 'Theme.DeviceDefault.Dialog.NoActionBar.MinWidth': 16974129, + 'Theme.DeviceDefault.InputMethod': 16974142, + 'Theme.DeviceDefault.Light': 16974123, + 'Theme.DeviceDefault.Light.DarkActionBar': 16974143, + 'Theme.DeviceDefault.Light.Dialog': 16974130, + 'Theme.DeviceDefault.Light.DialogWhenLarge': 16974136, + 'Theme.DeviceDefault.Light.DialogWhenLarge.NoActionBar': 16974137, + 'Theme.DeviceDefault.Light.Dialog.MinWidth': 16974131, + 'Theme.DeviceDefault.Light.Dialog.NoActionBar': 16974132, + 'Theme.DeviceDefault.Light.Dialog.NoActionBar.MinWidth': 16974133, + 'Theme.DeviceDefault.Light.NoActionBar': 16974124, + 'Theme.DeviceDefault.Light.NoActionBar.Fullscreen': 16974125, + 'Theme.DeviceDefault.Light.NoActionBar.Overscan': 16974304, + 'Theme.DeviceDefault.Light.NoActionBar.TranslucentDecor': 16974308, + 'Theme.DeviceDefault.Light.Panel': 16974139, + 'Theme.DeviceDefault.NoActionBar': 16974121, + 'Theme.DeviceDefault.NoActionBar.Fullscreen': 16974122, + 'Theme.DeviceDefault.NoActionBar.Overscan': 16974303, + 'Theme.DeviceDefault.NoActionBar.TranslucentDecor': 16974307, + 'Theme.DeviceDefault.Panel': 16974138, + 'Theme.DeviceDefault.Settings': 16974371, + 'Theme.DeviceDefault.Wallpaper': 16974140, + 'Theme.DeviceDefault.Wallpaper.NoTitleBar': 16974141, + 'Theme.Dialog': 16973835, + 'Theme.Holo': 16973931, + 'Theme.Holo.Dialog': 16973935, + 'Theme.Holo.DialogWhenLarge': 16973943, + 'Theme.Holo.DialogWhenLarge.NoActionBar': 16973944, + 'Theme.Holo.Dialog.MinWidth': 16973936, + 'Theme.Holo.Dialog.NoActionBar': 16973937, + 'Theme.Holo.Dialog.NoActionBar.MinWidth': 16973938, + 'Theme.Holo.InputMethod': 16973951, + 'Theme.Holo.Light': 16973934, + 'Theme.Holo.Light.DarkActionBar': 16974105, + 'Theme.Holo.Light.Dialog': 16973939, + 'Theme.Holo.Light.DialogWhenLarge': 16973945, + 'Theme.Holo.Light.DialogWhenLarge.NoActionBar': 16973946, + 'Theme.Holo.Light.Dialog.MinWidth': 16973940, + 'Theme.Holo.Light.Dialog.NoActionBar': 16973941, + 'Theme.Holo.Light.Dialog.NoActionBar.MinWidth': 16973942, + 'Theme.Holo.Light.NoActionBar': 16974064, + 'Theme.Holo.Light.NoActionBar.Fullscreen': 16974065, + 'Theme.Holo.Light.NoActionBar.Overscan': 16974302, + 'Theme.Holo.Light.NoActionBar.TranslucentDecor': 16974306, + 'Theme.Holo.Light.Panel': 16973948, + 'Theme.Holo.NoActionBar': 16973932, + 'Theme.Holo.NoActionBar.Fullscreen': 16973933, + 'Theme.Holo.NoActionBar.Overscan': 16974301, + 'Theme.Holo.NoActionBar.TranslucentDecor': 16974305, + 'Theme.Holo.Panel': 16973947, + 'Theme.Holo.Wallpaper': 16973949, + 'Theme.Holo.Wallpaper.NoTitleBar': 16973950, + 'Theme.InputMethod': 16973908, + 'Theme.Light': 16973836, + 'Theme.Light.NoTitleBar': 16973837, + 'Theme.Light.NoTitleBar.Fullscreen': 16973838, + 'Theme.Light.Panel': 16973914, + 'Theme.Light.WallpaperSettings': 16973922, + 'Theme.Material': 16974372, + 'Theme.Material.Dialog': 16974373, + 'Theme.Material.DialogWhenLarge': 16974379, + 'Theme.Material.DialogWhenLarge.NoActionBar': 16974380, + 'Theme.Material.Dialog.Alert': 16974374, + 'Theme.Material.Dialog.MinWidth': 16974375, + 'Theme.Material.Dialog.NoActionBar': 16974376, + 'Theme.Material.Dialog.NoActionBar.MinWidth': 16974377, + 'Theme.Material.Dialog.Presentation': 16974378, + 'Theme.Material.InputMethod': 16974381, + 'Theme.Material.Light': 16974391, + 'Theme.Material.Light.DarkActionBar': 16974392, + 'Theme.Material.Light.Dialog': 16974393, + 'Theme.Material.Light.DialogWhenLarge': 16974399, + 'Theme.Material.Light.DialogWhenLarge.NoActionBar': 16974400, + 'Theme.Material.Light.Dialog.Alert': 16974394, + 'Theme.Material.Light.Dialog.MinWidth': 16974395, + 'Theme.Material.Light.Dialog.NoActionBar': 16974396, + 'Theme.Material.Light.Dialog.NoActionBar.MinWidth': 16974397, + 'Theme.Material.Light.Dialog.Presentation': 16974398, + 'Theme.Material.Light.NoActionBar': 16974401, + 'Theme.Material.Light.NoActionBar.Fullscreen': 16974402, + 'Theme.Material.Light.NoActionBar.Overscan': 16974403, + 'Theme.Material.Light.NoActionBar.TranslucentDecor': 16974404, + 'Theme.Material.Light.Panel': 16974405, + 'Theme.Material.Light.Voice': 16974406, + 'Theme.Material.NoActionBar': 16974382, + 'Theme.Material.NoActionBar.Fullscreen': 16974383, + 'Theme.Material.NoActionBar.Overscan': 16974384, + 'Theme.Material.NoActionBar.TranslucentDecor': 16974385, + 'Theme.Material.Panel': 16974386, + 'Theme.Material.Settings': 16974387, + 'Theme.Material.Voice': 16974388, + 'Theme.Material.Wallpaper': 16974389, + 'Theme.Material.Wallpaper.NoTitleBar': 16974390, + 'Theme.NoDisplay': 16973909, + 'Theme.NoTitleBar': 16973830, + 'Theme.NoTitleBar.Fullscreen': 16973831, + 'Theme.NoTitleBar.OverlayActionModes': 16973930, + 'Theme.Panel': 16973913, + 'Theme.Translucent': 16973839, + 'Theme.Translucent.NoTitleBar': 16973840, + 'Theme.Translucent.NoTitleBar.Fullscreen': 16973841, + 'Theme.Wallpaper': 16973918, + 'Theme.WallpaperSettings': 16973921, + 'Theme.Wallpaper.NoTitleBar': 16973919, + 'Theme.Wallpaper.NoTitleBar.Fullscreen': 16973920, + 'Theme.WithActionBar': 16973929, + 'Widget': 16973842, + 'Widget.AbsListView': 16973843, + 'Widget.ActionBar': 16973954, + 'Widget.ActionBar.TabBar': 16974068, + 'Widget.ActionBar.TabText': 16974067, + 'Widget.ActionBar.TabView': 16974066, + 'Widget.ActionButton': 16973956, + 'Widget.ActionButton.CloseMode': 16973960, + 'Widget.ActionButton.Overflow': 16973959, + 'Widget.AutoCompleteTextView': 16973863, + 'Widget.Button': 16973844, + 'Widget.Button.Inset': 16973845, + 'Widget.Button.Small': 16973846, + 'Widget.Button.Toggle': 16973847, + 'Widget.CalendarView': 16974059, + 'Widget.CompoundButton': 16973848, + 'Widget.CompoundButton.CheckBox': 16973849, + 'Widget.CompoundButton.RadioButton': 16973850, + 'Widget.CompoundButton.Star': 16973851, + 'Widget.DatePicker': 16974062, + 'Widget.DeviceDefault': 16974144, + 'Widget.DeviceDefault.ActionBar': 16974187, + 'Widget.DeviceDefault.ActionBar.Solid': 16974195, + 'Widget.DeviceDefault.ActionBar.TabBar': 16974194, + 'Widget.DeviceDefault.ActionBar.TabText': 16974193, + 'Widget.DeviceDefault.ActionBar.TabView': 16974192, + 'Widget.DeviceDefault.ActionButton': 16974182, + 'Widget.DeviceDefault.ActionButton.CloseMode': 16974186, + 'Widget.DeviceDefault.ActionButton.Overflow': 16974183, + 'Widget.DeviceDefault.ActionButton.TextButton': 16974184, + 'Widget.DeviceDefault.ActionMode': 16974185, + 'Widget.DeviceDefault.AutoCompleteTextView': 16974151, + 'Widget.DeviceDefault.Button': 16974145, + 'Widget.DeviceDefault.Button.Borderless': 16974188, + 'Widget.DeviceDefault.Button.Borderless.Small': 16974149, + 'Widget.DeviceDefault.Button.Inset': 16974147, + 'Widget.DeviceDefault.Button.Small': 16974146, + 'Widget.DeviceDefault.Button.Toggle': 16974148, + 'Widget.DeviceDefault.CalendarView': 16974190, + 'Widget.DeviceDefault.CheckedTextView': 16974299, + 'Widget.DeviceDefault.CompoundButton.CheckBox': 16974152, + 'Widget.DeviceDefault.CompoundButton.RadioButton': 16974169, + 'Widget.DeviceDefault.CompoundButton.Star': 16974173, + 'Widget.DeviceDefault.DatePicker': 16974191, + 'Widget.DeviceDefault.DropDownItem': 16974177, + 'Widget.DeviceDefault.DropDownItem.Spinner': 16974178, + 'Widget.DeviceDefault.EditText': 16974154, + 'Widget.DeviceDefault.ExpandableListView': 16974155, + 'Widget.DeviceDefault.FastScroll': 16974313, + 'Widget.DeviceDefault.GridView': 16974156, + 'Widget.DeviceDefault.HorizontalScrollView': 16974171, + 'Widget.DeviceDefault.ImageButton': 16974157, + 'Widget.DeviceDefault.Light': 16974196, + 'Widget.DeviceDefault.Light.ActionBar': 16974243, + 'Widget.DeviceDefault.Light.ActionBar.Solid': 16974247, + 'Widget.DeviceDefault.Light.ActionBar.Solid.Inverse': 16974248, + 'Widget.DeviceDefault.Light.ActionBar.TabBar': 16974246, + 'Widget.DeviceDefault.Light.ActionBar.TabBar.Inverse': 16974249, + 'Widget.DeviceDefault.Light.ActionBar.TabText': 16974245, + 'Widget.DeviceDefault.Light.ActionBar.TabText.Inverse': 16974251, + 'Widget.DeviceDefault.Light.ActionBar.TabView': 16974244, + 'Widget.DeviceDefault.Light.ActionBar.TabView.Inverse': 16974250, + 'Widget.DeviceDefault.Light.ActionButton': 16974239, + 'Widget.DeviceDefault.Light.ActionButton.CloseMode': 16974242, + 'Widget.DeviceDefault.Light.ActionButton.Overflow': 16974240, + 'Widget.DeviceDefault.Light.ActionMode': 16974241, + 'Widget.DeviceDefault.Light.ActionMode.Inverse': 16974252, + 'Widget.DeviceDefault.Light.AutoCompleteTextView': 16974203, + 'Widget.DeviceDefault.Light.Button': 16974197, + 'Widget.DeviceDefault.Light.Button.Borderless.Small': 16974201, + 'Widget.DeviceDefault.Light.Button.Inset': 16974199, + 'Widget.DeviceDefault.Light.Button.Small': 16974198, + 'Widget.DeviceDefault.Light.Button.Toggle': 16974200, + 'Widget.DeviceDefault.Light.CalendarView': 16974238, + 'Widget.DeviceDefault.Light.CheckedTextView': 16974300, + 'Widget.DeviceDefault.Light.CompoundButton.CheckBox': 16974204, + 'Widget.DeviceDefault.Light.CompoundButton.RadioButton': 16974224, + 'Widget.DeviceDefault.Light.CompoundButton.Star': 16974228, + 'Widget.DeviceDefault.Light.DropDownItem': 16974232, + 'Widget.DeviceDefault.Light.DropDownItem.Spinner': 16974233, + 'Widget.DeviceDefault.Light.EditText': 16974206, + 'Widget.DeviceDefault.Light.ExpandableListView': 16974207, + 'Widget.DeviceDefault.Light.FastScroll': 16974315, + 'Widget.DeviceDefault.Light.GridView': 16974208, + 'Widget.DeviceDefault.Light.HorizontalScrollView': 16974226, + 'Widget.DeviceDefault.Light.ImageButton': 16974209, + 'Widget.DeviceDefault.Light.ListPopupWindow': 16974235, + 'Widget.DeviceDefault.Light.ListView': 16974210, + 'Widget.DeviceDefault.Light.ListView.DropDown': 16974205, + 'Widget.DeviceDefault.Light.MediaRouteButton': 16974296, + 'Widget.DeviceDefault.Light.PopupMenu': 16974236, + 'Widget.DeviceDefault.Light.PopupWindow': 16974211, + 'Widget.DeviceDefault.Light.ProgressBar': 16974212, + 'Widget.DeviceDefault.Light.ProgressBar.Horizontal': 16974213, + 'Widget.DeviceDefault.Light.ProgressBar.Inverse': 16974217, + 'Widget.DeviceDefault.Light.ProgressBar.Large': 16974216, + 'Widget.DeviceDefault.Light.ProgressBar.Large.Inverse': 16974219, + 'Widget.DeviceDefault.Light.ProgressBar.Small': 16974214, + 'Widget.DeviceDefault.Light.ProgressBar.Small.Inverse': 16974218, + 'Widget.DeviceDefault.Light.ProgressBar.Small.Title': 16974215, + 'Widget.DeviceDefault.Light.RatingBar': 16974221, + 'Widget.DeviceDefault.Light.RatingBar.Indicator': 16974222, + 'Widget.DeviceDefault.Light.RatingBar.Small': 16974223, + 'Widget.DeviceDefault.Light.ScrollView': 16974225, + 'Widget.DeviceDefault.Light.SeekBar': 16974220, + 'Widget.DeviceDefault.Light.Spinner': 16974227, + 'Widget.DeviceDefault.Light.StackView': 16974316, + 'Widget.DeviceDefault.Light.Tab': 16974237, + 'Widget.DeviceDefault.Light.TabWidget': 16974229, + 'Widget.DeviceDefault.Light.TextView': 16974202, + 'Widget.DeviceDefault.Light.TextView.SpinnerItem': 16974234, + 'Widget.DeviceDefault.Light.WebTextView': 16974230, + 'Widget.DeviceDefault.Light.WebView': 16974231, + 'Widget.DeviceDefault.ListPopupWindow': 16974180, + 'Widget.DeviceDefault.ListView': 16974158, + 'Widget.DeviceDefault.ListView.DropDown': 16974153, + 'Widget.DeviceDefault.MediaRouteButton': 16974295, + 'Widget.DeviceDefault.PopupMenu': 16974181, + 'Widget.DeviceDefault.PopupWindow': 16974159, + 'Widget.DeviceDefault.ProgressBar': 16974160, + 'Widget.DeviceDefault.ProgressBar.Horizontal': 16974161, + 'Widget.DeviceDefault.ProgressBar.Large': 16974164, + 'Widget.DeviceDefault.ProgressBar.Small': 16974162, + 'Widget.DeviceDefault.ProgressBar.Small.Title': 16974163, + 'Widget.DeviceDefault.RatingBar': 16974166, + 'Widget.DeviceDefault.RatingBar.Indicator': 16974167, + 'Widget.DeviceDefault.RatingBar.Small': 16974168, + 'Widget.DeviceDefault.ScrollView': 16974170, + 'Widget.DeviceDefault.SeekBar': 16974165, + 'Widget.DeviceDefault.Spinner': 16974172, + 'Widget.DeviceDefault.StackView': 16974314, + 'Widget.DeviceDefault.Tab': 16974189, + 'Widget.DeviceDefault.TabWidget': 16974174, + 'Widget.DeviceDefault.TextView': 16974150, + 'Widget.DeviceDefault.TextView.SpinnerItem': 16974179, + 'Widget.DeviceDefault.WebTextView': 16974175, + 'Widget.DeviceDefault.WebView': 16974176, + 'Widget.DropDownItem': 16973867, + 'Widget.DropDownItem.Spinner': 16973868, + 'Widget.EditText': 16973859, + 'Widget.ExpandableListView': 16973860, + 'Widget.FastScroll': 16974309, + 'Widget.FragmentBreadCrumbs': 16973961, + 'Widget.Gallery': 16973877, + 'Widget.GridView': 16973874, + 'Widget.Holo': 16973962, + 'Widget.Holo.ActionBar': 16974004, + 'Widget.Holo.ActionBar.Solid': 16974113, + 'Widget.Holo.ActionBar.TabBar': 16974071, + 'Widget.Holo.ActionBar.TabText': 16974070, + 'Widget.Holo.ActionBar.TabView': 16974069, + 'Widget.Holo.ActionButton': 16973999, + 'Widget.Holo.ActionButton.CloseMode': 16974003, + 'Widget.Holo.ActionButton.Overflow': 16974000, + 'Widget.Holo.ActionButton.TextButton': 16974001, + 'Widget.Holo.ActionMode': 16974002, + 'Widget.Holo.AutoCompleteTextView': 16973968, + 'Widget.Holo.Button': 16973963, + 'Widget.Holo.Button.Borderless': 16974050, + 'Widget.Holo.Button.Borderless.Small': 16974106, + 'Widget.Holo.Button.Inset': 16973965, + 'Widget.Holo.Button.Small': 16973964, + 'Widget.Holo.Button.Toggle': 16973966, + 'Widget.Holo.CalendarView': 16974060, + 'Widget.Holo.CheckedTextView': 16974297, + 'Widget.Holo.CompoundButton.CheckBox': 16973969, + 'Widget.Holo.CompoundButton.RadioButton': 16973986, + 'Widget.Holo.CompoundButton.Star': 16973990, + 'Widget.Holo.DatePicker': 16974063, + 'Widget.Holo.DropDownItem': 16973994, + 'Widget.Holo.DropDownItem.Spinner': 16973995, + 'Widget.Holo.EditText': 16973971, + 'Widget.Holo.ExpandableListView': 16973972, + 'Widget.Holo.GridView': 16973973, + 'Widget.Holo.HorizontalScrollView': 16973988, + 'Widget.Holo.ImageButton': 16973974, + 'Widget.Holo.Light': 16974005, + 'Widget.Holo.Light.ActionBar': 16974049, + 'Widget.Holo.Light.ActionBar.Solid': 16974114, + 'Widget.Holo.Light.ActionBar.Solid.Inverse': 16974115, + 'Widget.Holo.Light.ActionBar.TabBar': 16974074, + 'Widget.Holo.Light.ActionBar.TabBar.Inverse': 16974116, + 'Widget.Holo.Light.ActionBar.TabText': 16974073, + 'Widget.Holo.Light.ActionBar.TabText.Inverse': 16974118, + 'Widget.Holo.Light.ActionBar.TabView': 16974072, + 'Widget.Holo.Light.ActionBar.TabView.Inverse': 16974117, + 'Widget.Holo.Light.ActionButton': 16974045, + 'Widget.Holo.Light.ActionButton.CloseMode': 16974048, + 'Widget.Holo.Light.ActionButton.Overflow': 16974046, + 'Widget.Holo.Light.ActionMode': 16974047, + 'Widget.Holo.Light.ActionMode.Inverse': 16974119, + 'Widget.Holo.Light.AutoCompleteTextView': 16974011, + 'Widget.Holo.Light.Button': 16974006, + 'Widget.Holo.Light.Button.Borderless.Small': 16974107, + 'Widget.Holo.Light.Button.Inset': 16974008, + 'Widget.Holo.Light.Button.Small': 16974007, + 'Widget.Holo.Light.Button.Toggle': 16974009, + 'Widget.Holo.Light.CalendarView': 16974061, + 'Widget.Holo.Light.CheckedTextView': 16974298, + 'Widget.Holo.Light.CompoundButton.CheckBox': 16974012, + 'Widget.Holo.Light.CompoundButton.RadioButton': 16974032, + 'Widget.Holo.Light.CompoundButton.Star': 16974036, + 'Widget.Holo.Light.DropDownItem': 16974040, + 'Widget.Holo.Light.DropDownItem.Spinner': 16974041, + 'Widget.Holo.Light.EditText': 16974014, + 'Widget.Holo.Light.ExpandableListView': 16974015, + 'Widget.Holo.Light.GridView': 16974016, + 'Widget.Holo.Light.HorizontalScrollView': 16974034, + 'Widget.Holo.Light.ImageButton': 16974017, + 'Widget.Holo.Light.ListPopupWindow': 16974043, + 'Widget.Holo.Light.ListView': 16974018, + 'Widget.Holo.Light.ListView.DropDown': 16974013, + 'Widget.Holo.Light.MediaRouteButton': 16974294, + 'Widget.Holo.Light.PopupMenu': 16974044, + 'Widget.Holo.Light.PopupWindow': 16974019, + 'Widget.Holo.Light.ProgressBar': 16974020, + 'Widget.Holo.Light.ProgressBar.Horizontal': 16974021, + 'Widget.Holo.Light.ProgressBar.Inverse': 16974025, + 'Widget.Holo.Light.ProgressBar.Large': 16974024, + 'Widget.Holo.Light.ProgressBar.Large.Inverse': 16974027, + 'Widget.Holo.Light.ProgressBar.Small': 16974022, + 'Widget.Holo.Light.ProgressBar.Small.Inverse': 16974026, + 'Widget.Holo.Light.ProgressBar.Small.Title': 16974023, + 'Widget.Holo.Light.RatingBar': 16974029, + 'Widget.Holo.Light.RatingBar.Indicator': 16974030, + 'Widget.Holo.Light.RatingBar.Small': 16974031, + 'Widget.Holo.Light.ScrollView': 16974033, + 'Widget.Holo.Light.SeekBar': 16974028, + 'Widget.Holo.Light.Spinner': 16974035, + 'Widget.Holo.Light.Tab': 16974052, + 'Widget.Holo.Light.TabWidget': 16974037, + 'Widget.Holo.Light.TextView': 16974010, + 'Widget.Holo.Light.TextView.SpinnerItem': 16974042, + 'Widget.Holo.Light.WebTextView': 16974038, + 'Widget.Holo.Light.WebView': 16974039, + 'Widget.Holo.ListPopupWindow': 16973997, + 'Widget.Holo.ListView': 16973975, + 'Widget.Holo.ListView.DropDown': 16973970, + 'Widget.Holo.MediaRouteButton': 16974293, + 'Widget.Holo.PopupMenu': 16973998, + 'Widget.Holo.PopupWindow': 16973976, + 'Widget.Holo.ProgressBar': 16973977, + 'Widget.Holo.ProgressBar.Horizontal': 16973978, + 'Widget.Holo.ProgressBar.Large': 16973981, + 'Widget.Holo.ProgressBar.Small': 16973979, + 'Widget.Holo.ProgressBar.Small.Title': 16973980, + 'Widget.Holo.RatingBar': 16973983, + 'Widget.Holo.RatingBar.Indicator': 16973984, + 'Widget.Holo.RatingBar.Small': 16973985, + 'Widget.Holo.ScrollView': 16973987, + 'Widget.Holo.SeekBar': 16973982, + 'Widget.Holo.Spinner': 16973989, + 'Widget.Holo.Tab': 16974051, + 'Widget.Holo.TabWidget': 16973991, + 'Widget.Holo.TextView': 16973967, + 'Widget.Holo.TextView.SpinnerItem': 16973996, + 'Widget.Holo.WebTextView': 16973992, + 'Widget.Holo.WebView': 16973993, + 'Widget.ImageButton': 16973862, + 'Widget.ImageWell': 16973861, + 'Widget.KeyboardView': 16973911, + 'Widget.ListPopupWindow': 16973957, + 'Widget.ListView': 16973870, + 'Widget.ListView.DropDown': 16973872, + 'Widget.ListView.Menu': 16973873, + 'Widget.ListView.White': 16973871, + 'Widget.Material': 16974413, + 'Widget.Material.ActionBar': 16974414, + 'Widget.Material.ActionBar.Solid': 16974415, + 'Widget.Material.ActionBar.TabBar': 16974416, + 'Widget.Material.ActionBar.TabText': 16974417, + 'Widget.Material.ActionBar.TabView': 16974418, + 'Widget.Material.ActionButton': 16974419, + 'Widget.Material.ActionButton.CloseMode': 16974420, + 'Widget.Material.ActionButton.Overflow': 16974421, + 'Widget.Material.ActionMode': 16974422, + 'Widget.Material.AutoCompleteTextView': 16974423, + 'Widget.Material.Button': 16974424, + 'Widget.Material.ButtonBar': 16974431, + 'Widget.Material.ButtonBar.AlertDialog': 16974432, + 'Widget.Material.Button.Borderless': 16974425, + 'Widget.Material.Button.Borderless.Colored': 16974426, + 'Widget.Material.Button.Borderless.Small': 16974427, + 'Widget.Material.Button.Inset': 16974428, + 'Widget.Material.Button.Small': 16974429, + 'Widget.Material.Button.Toggle': 16974430, + 'Widget.Material.CalendarView': 16974433, + 'Widget.Material.CheckedTextView': 16974434, + 'Widget.Material.CompoundButton.CheckBox': 16974435, + 'Widget.Material.CompoundButton.RadioButton': 16974436, + 'Widget.Material.CompoundButton.Star': 16974437, + 'Widget.Material.DatePicker': 16974438, + 'Widget.Material.DropDownItem': 16974439, + 'Widget.Material.DropDownItem.Spinner': 16974440, + 'Widget.Material.EditText': 16974441, + 'Widget.Material.ExpandableListView': 16974442, + 'Widget.Material.FastScroll': 16974443, + 'Widget.Material.GridView': 16974444, + 'Widget.Material.HorizontalScrollView': 16974445, + 'Widget.Material.ImageButton': 16974446, + 'Widget.Material.Light': 16974478, + 'Widget.Material.Light.ActionBar': 16974479, + 'Widget.Material.Light.ActionBar.Solid': 16974480, + 'Widget.Material.Light.ActionBar.TabBar': 16974481, + 'Widget.Material.Light.ActionBar.TabText': 16974482, + 'Widget.Material.Light.ActionBar.TabView': 16974483, + 'Widget.Material.Light.ActionButton': 16974484, + 'Widget.Material.Light.ActionButton.CloseMode': 16974485, + 'Widget.Material.Light.ActionButton.Overflow': 16974486, + 'Widget.Material.Light.ActionMode': 16974487, + 'Widget.Material.Light.AutoCompleteTextView': 16974488, + 'Widget.Material.Light.Button': 16974489, + 'Widget.Material.Light.ButtonBar': 16974496, + 'Widget.Material.Light.ButtonBar.AlertDialog': 16974497, + 'Widget.Material.Light.Button.Borderless': 16974490, + 'Widget.Material.Light.Button.Borderless.Colored': 16974491, + 'Widget.Material.Light.Button.Borderless.Small': 16974492, + 'Widget.Material.Light.Button.Inset': 16974493, + 'Widget.Material.Light.Button.Small': 16974494, + 'Widget.Material.Light.Button.Toggle': 16974495, + 'Widget.Material.Light.CalendarView': 16974498, + 'Widget.Material.Light.CheckedTextView': 16974499, + 'Widget.Material.Light.CompoundButton.CheckBox': 16974500, + 'Widget.Material.Light.CompoundButton.RadioButton': 16974501, + 'Widget.Material.Light.CompoundButton.Star': 16974502, + 'Widget.Material.Light.DatePicker': 16974503, + 'Widget.Material.Light.DropDownItem': 16974504, + 'Widget.Material.Light.DropDownItem.Spinner': 16974505, + 'Widget.Material.Light.EditText': 16974506, + 'Widget.Material.Light.ExpandableListView': 16974507, + 'Widget.Material.Light.FastScroll': 16974508, + 'Widget.Material.Light.GridView': 16974509, + 'Widget.Material.Light.HorizontalScrollView': 16974510, + 'Widget.Material.Light.ImageButton': 16974511, + 'Widget.Material.Light.ListPopupWindow': 16974512, + 'Widget.Material.Light.ListView': 16974513, + 'Widget.Material.Light.ListView.DropDown': 16974514, + 'Widget.Material.Light.MediaRouteButton': 16974515, + 'Widget.Material.Light.PopupMenu': 16974516, + 'Widget.Material.Light.PopupMenu.Overflow': 16974517, + 'Widget.Material.Light.PopupWindow': 16974518, + 'Widget.Material.Light.ProgressBar': 16974519, + 'Widget.Material.Light.ProgressBar.Horizontal': 16974520, + 'Widget.Material.Light.ProgressBar.Inverse': 16974521, + 'Widget.Material.Light.ProgressBar.Large': 16974522, + 'Widget.Material.Light.ProgressBar.Large.Inverse': 16974523, + 'Widget.Material.Light.ProgressBar.Small': 16974524, + 'Widget.Material.Light.ProgressBar.Small.Inverse': 16974525, + 'Widget.Material.Light.ProgressBar.Small.Title': 16974526, + 'Widget.Material.Light.RatingBar': 16974527, + 'Widget.Material.Light.RatingBar.Indicator': 16974528, + 'Widget.Material.Light.RatingBar.Small': 16974529, + 'Widget.Material.Light.ScrollView': 16974530, + 'Widget.Material.Light.SearchView': 16974531, + 'Widget.Material.Light.SeekBar': 16974532, + 'Widget.Material.Light.SegmentedButton': 16974533, + 'Widget.Material.Light.Spinner': 16974535, + 'Widget.Material.Light.Spinner.Underlined': 16974536, + 'Widget.Material.Light.StackView': 16974534, + 'Widget.Material.Light.Tab': 16974537, + 'Widget.Material.Light.TabWidget': 16974538, + 'Widget.Material.Light.TextView': 16974539, + 'Widget.Material.Light.TextView.SpinnerItem': 16974540, + 'Widget.Material.Light.TimePicker': 16974541, + 'Widget.Material.Light.WebTextView': 16974542, + 'Widget.Material.Light.WebView': 16974543, + 'Widget.Material.ListPopupWindow': 16974447, + 'Widget.Material.ListView': 16974448, + 'Widget.Material.ListView.DropDown': 16974449, + 'Widget.Material.MediaRouteButton': 16974450, + 'Widget.Material.PopupMenu': 16974451, + 'Widget.Material.PopupMenu.Overflow': 16974452, + 'Widget.Material.PopupWindow': 16974453, + 'Widget.Material.ProgressBar': 16974454, + 'Widget.Material.ProgressBar.Horizontal': 16974455, + 'Widget.Material.ProgressBar.Large': 16974456, + 'Widget.Material.ProgressBar.Small': 16974457, + 'Widget.Material.ProgressBar.Small.Title': 16974458, + 'Widget.Material.RatingBar': 16974459, + 'Widget.Material.RatingBar.Indicator': 16974460, + 'Widget.Material.RatingBar.Small': 16974461, + 'Widget.Material.ScrollView': 16974462, + 'Widget.Material.SearchView': 16974463, + 'Widget.Material.SeekBar': 16974464, + 'Widget.Material.SegmentedButton': 16974465, + 'Widget.Material.Spinner': 16974467, + 'Widget.Material.Spinner.Underlined': 16974468, + 'Widget.Material.StackView': 16974466, + 'Widget.Material.Tab': 16974469, + 'Widget.Material.TabWidget': 16974470, + 'Widget.Material.TextView': 16974471, + 'Widget.Material.TextView.SpinnerItem': 16974472, + 'Widget.Material.TimePicker': 16974473, + 'Widget.Material.Toolbar': 16974474, + 'Widget.Material.Toolbar.Button.Navigation': 16974475, + 'Widget.Material.WebTextView': 16974476, + 'Widget.Material.WebView': 16974477, + 'Widget.PopupMenu': 16973958, + 'Widget.PopupWindow': 16973878, + 'Widget.ProgressBar': 16973852, + 'Widget.ProgressBar.Horizontal': 16973855, + 'Widget.ProgressBar.Inverse': 16973915, + 'Widget.ProgressBar.Large': 16973853, + 'Widget.ProgressBar.Large.Inverse': 16973916, + 'Widget.ProgressBar.Small': 16973854, + 'Widget.ProgressBar.Small.Inverse': 16973917, + 'Widget.RatingBar': 16973857, + 'Widget.ScrollView': 16973869, + 'Widget.SeekBar': 16973856, + 'Widget.Spinner': 16973864, + 'Widget.Spinner.DropDown': 16973955, + 'Widget.StackView': 16974310, + 'Widget.TabWidget': 16973876, + 'Widget.TextView': 16973858, + 'Widget.TextView.PopupMenu': 16973865, + 'Widget.TextView.SpinnerItem': 16973866, + 'Widget.Toolbar': 16974311, + 'Widget.Toolbar.Button.Navigation': 16974312, + 'Widget.WebView': 16973875, + }, 'attr': { - 'theme' : 16842752, - 'label' : 16842753, - 'icon' : 16842754, - 'name' : 16842755, - 'manageSpaceActivity' : 16842756, - 'allowClearUserData' : 16842757, - 'permission' : 16842758, - 'readPermission' : 16842759, - 'writePermission' : 16842760, - 'protectionLevel' : 16842761, - 'permissionGroup' : 16842762, - 'sharedUserId' : 16842763, - 'hasCode' : 16842764, - 'persistent' : 16842765, - 'enabled' : 16842766, - 'debuggable' : 16842767, - 'exported' : 16842768, - 'process' : 16842769, - 'taskAffinity' : 16842770, - 'multiprocess' : 16842771, - 'finishOnTaskLaunch' : 16842772, - 'clearTaskOnLaunch' : 16842773, - 'stateNotNeeded' : 16842774, - 'excludeFromRecents' : 16842775, - 'authorities' : 16842776, - 'syncable' : 16842777, - 'initOrder' : 16842778, - 'grantUriPermissions' : 16842779, - 'priority' : 16842780, - 'launchMode' : 16842781, - 'screenOrientation' : 16842782, - 'configChanges' : 16842783, - 'description' : 16842784, - 'targetPackage' : 16842785, - 'handleProfiling' : 16842786, - 'functionalTest' : 16842787, - 'value' : 16842788, - 'resource' : 16842789, - 'mimeType' : 16842790, - 'scheme' : 16842791, - 'host' : 16842792, - 'port' : 16842793, - 'path' : 16842794, - 'pathPrefix' : 16842795, - 'pathPattern' : 16842796, - 'action' : 16842797, - 'data' : 16842798, - 'targetClass' : 16842799, - 'colorForeground' : 16842800, - 'colorBackground' : 16842801, - 'backgroundDimAmount' : 16842802, - 'disabledAlpha' : 16842803, - 'textAppearance' : 16842804, - 'textAppearanceInverse' : 16842805, - 'textColorPrimary' : 16842806, - 'textColorPrimaryDisableOnly' : 16842807, - 'textColorSecondary' : 16842808, - 'textColorPrimaryInverse' : 16842809, - 'textColorSecondaryInverse' : 16842810, - 'textColorPrimaryNoDisable' : 16842811, - 'textColorSecondaryNoDisable' : 16842812, - 'textColorPrimaryInverseNoDisable' : 16842813, - 'textColorSecondaryInverseNoDisable' : 16842814, - 'textColorHintInverse' : 16842815, - 'textAppearanceLarge' : 16842816, - 'textAppearanceMedium' : 16842817, - 'textAppearanceSmall' : 16842818, - 'textAppearanceLargeInverse' : 16842819, - 'textAppearanceMediumInverse' : 16842820, - 'textAppearanceSmallInverse' : 16842821, - 'textCheckMark' : 16842822, - 'textCheckMarkInverse' : 16842823, - 'buttonStyle' : 16842824, - 'buttonStyleSmall' : 16842825, - 'buttonStyleInset' : 16842826, - 'buttonStyleToggle' : 16842827, - 'galleryItemBackground' : 16842828, - 'listPreferredItemHeight' : 16842829, - 'expandableListPreferredItemPaddingLeft' : 16842830, - 'expandableListPreferredChildPaddingLeft' : 16842831, - 'expandableListPreferredItemIndicatorLeft' : 16842832, - 'expandableListPreferredItemIndicatorRight' : 16842833, - 'expandableListPreferredChildIndicatorLeft' : 16842834, - 'expandableListPreferredChildIndicatorRight' : 16842835, - 'windowBackground' : 16842836, - 'windowFrame' : 16842837, - 'windowNoTitle' : 16842838, - 'windowIsFloating' : 16842839, - 'windowIsTranslucent' : 16842840, - 'windowContentOverlay' : 16842841, - 'windowTitleSize' : 16842842, - 'windowTitleStyle' : 16842843, - 'windowTitleBackgroundStyle' : 16842844, - 'alertDialogStyle' : 16842845, - 'panelBackground' : 16842846, - 'panelFullBackground' : 16842847, - 'panelColorForeground' : 16842848, - 'panelColorBackground' : 16842849, - 'panelTextAppearance' : 16842850, - 'scrollbarSize' : 16842851, - 'scrollbarThumbHorizontal' : 16842852, - 'scrollbarThumbVertical' : 16842853, - 'scrollbarTrackHorizontal' : 16842854, - 'scrollbarTrackVertical' : 16842855, - 'scrollbarAlwaysDrawHorizontalTrack' : 16842856, - 'scrollbarAlwaysDrawVerticalTrack' : 16842857, - 'absListViewStyle' : 16842858, - 'autoCompleteTextViewStyle' : 16842859, - 'checkboxStyle' : 16842860, - 'dropDownListViewStyle' : 16842861, - 'editTextStyle' : 16842862, - 'expandableListViewStyle' : 16842863, - 'galleryStyle' : 16842864, - 'gridViewStyle' : 16842865, - 'imageButtonStyle' : 16842866, - 'imageWellStyle' : 16842867, - 'listViewStyle' : 16842868, - 'listViewWhiteStyle' : 16842869, - 'popupWindowStyle' : 16842870, - 'progressBarStyle' : 16842871, - 'progressBarStyleHorizontal' : 16842872, - 'progressBarStyleSmall' : 16842873, - 'progressBarStyleLarge' : 16842874, - 'seekBarStyle' : 16842875, - 'ratingBarStyle' : 16842876, - 'ratingBarStyleSmall' : 16842877, - 'radioButtonStyle' : 16842878, - 'scrollbarStyle' : 16842879, - 'scrollViewStyle' : 16842880, - 'spinnerStyle' : 16842881, - 'starStyle' : 16842882, - 'tabWidgetStyle' : 16842883, - 'textViewStyle' : 16842884, - 'webViewStyle' : 16842885, - 'dropDownItemStyle' : 16842886, - 'spinnerDropDownItemStyle' : 16842887, - 'dropDownHintAppearance' : 16842888, - 'spinnerItemStyle' : 16842889, - 'mapViewStyle' : 16842890, - 'preferenceScreenStyle' : 16842891, - 'preferenceCategoryStyle' : 16842892, - 'preferenceInformationStyle' : 16842893, - 'preferenceStyle' : 16842894, - 'checkBoxPreferenceStyle' : 16842895, - 'yesNoPreferenceStyle' : 16842896, - 'dialogPreferenceStyle' : 16842897, - 'editTextPreferenceStyle' : 16842898, - 'ringtonePreferenceStyle' : 16842899, - 'preferenceLayoutChild' : 16842900, - 'textSize' : 16842901, - 'typeface' : 16842902, - 'textStyle' : 16842903, - 'textColor' : 16842904, - 'textColorHighlight' : 16842905, - 'textColorHint' : 16842906, - 'textColorLink' : 16842907, - 'state_focused' : 16842908, - 'state_window_focused' : 16842909, - 'state_enabled' : 16842910, - 'state_checkable' : 16842911, - 'state_checked' : 16842912, - 'state_selected' : 16842913, - 'state_active' : 16842914, - 'state_single' : 16842915, - 'state_first' : 16842916, - 'state_middle' : 16842917, - 'state_last' : 16842918, - 'state_pressed' : 16842919, - 'state_expanded' : 16842920, - 'state_empty' : 16842921, - 'state_above_anchor' : 16842922, - 'ellipsize' : 16842923, - 'x' : 16842924, - 'y' : 16842925, - 'windowAnimationStyle' : 16842926, - 'gravity' : 16842927, - 'autoLink' : 16842928, - 'linksClickable' : 16842929, - 'entries' : 16842930, - 'layout_gravity' : 16842931, - 'windowEnterAnimation' : 16842932, - 'windowExitAnimation' : 16842933, - 'windowShowAnimation' : 16842934, - 'windowHideAnimation' : 16842935, - 'activityOpenEnterAnimation' : 16842936, - 'activityOpenExitAnimation' : 16842937, - 'activityCloseEnterAnimation' : 16842938, - 'activityCloseExitAnimation' : 16842939, - 'taskOpenEnterAnimation' : 16842940, - 'taskOpenExitAnimation' : 16842941, - 'taskCloseEnterAnimation' : 16842942, - 'taskCloseExitAnimation' : 16842943, - 'taskToFrontEnterAnimation' : 16842944, - 'taskToFrontExitAnimation' : 16842945, - 'taskToBackEnterAnimation' : 16842946, - 'taskToBackExitAnimation' : 16842947, - 'orientation' : 16842948, - 'keycode' : 16842949, - 'fullDark' : 16842950, - 'topDark' : 16842951, - 'centerDark' : 16842952, - 'bottomDark' : 16842953, - 'fullBright' : 16842954, - 'topBright' : 16842955, - 'centerBright' : 16842956, - 'bottomBright' : 16842957, - 'bottomMedium' : 16842958, - 'centerMedium' : 16842959, - 'id' : 16842960, - 'tag' : 16842961, - 'scrollX' : 16842962, - 'scrollY' : 16842963, - 'background' : 16842964, - 'padding' : 16842965, - 'paddingLeft' : 16842966, - 'paddingTop' : 16842967, - 'paddingRight' : 16842968, - 'paddingBottom' : 16842969, - 'focusable' : 16842970, - 'focusableInTouchMode' : 16842971, - 'visibility' : 16842972, - 'fitsSystemWindows' : 16842973, - 'scrollbars' : 16842974, - 'fadingEdge' : 16842975, - 'fadingEdgeLength' : 16842976, - 'nextFocusLeft' : 16842977, - 'nextFocusRight' : 16842978, - 'nextFocusUp' : 16842979, - 'nextFocusDown' : 16842980, - 'clickable' : 16842981, - 'longClickable' : 16842982, - 'saveEnabled' : 16842983, - 'drawingCacheQuality' : 16842984, - 'duplicateParentState' : 16842985, - 'clipChildren' : 16842986, - 'clipToPadding' : 16842987, - 'layoutAnimation' : 16842988, - 'animationCache' : 16842989, - 'persistentDrawingCache' : 16842990, - 'alwaysDrawnWithCache' : 16842991, - 'addStatesFromChildren' : 16842992, - 'descendantFocusability' : 16842993, - 'layout' : 16842994, - 'inflatedId' : 16842995, - 'layout_width' : 16842996, - 'layout_height' : 16842997, - 'layout_margin' : 16842998, - 'layout_marginLeft' : 16842999, - 'layout_marginTop' : 16843000, - 'layout_marginRight' : 16843001, - 'layout_marginBottom' : 16843002, - 'listSelector' : 16843003, - 'drawSelectorOnTop' : 16843004, - 'stackFromBottom' : 16843005, - 'scrollingCache' : 16843006, - 'textFilterEnabled' : 16843007, - 'transcriptMode' : 16843008, - 'cacheColorHint' : 16843009, - 'dial' : 16843010, - 'hand_hour' : 16843011, - 'hand_minute' : 16843012, - 'format' : 16843013, - 'checked' : 16843014, - 'button' : 16843015, - 'checkMark' : 16843016, - 'foreground' : 16843017, - 'measureAllChildren' : 16843018, - 'groupIndicator' : 16843019, - 'childIndicator' : 16843020, - 'indicatorLeft' : 16843021, - 'indicatorRight' : 16843022, - 'childIndicatorLeft' : 16843023, - 'childIndicatorRight' : 16843024, - 'childDivider' : 16843025, - 'animationDuration' : 16843026, - 'spacing' : 16843027, - 'horizontalSpacing' : 16843028, - 'verticalSpacing' : 16843029, - 'stretchMode' : 16843030, - 'columnWidth' : 16843031, - 'numColumns' : 16843032, - 'src' : 16843033, - 'antialias' : 16843034, - 'filter' : 16843035, - 'dither' : 16843036, - 'scaleType' : 16843037, - 'adjustViewBounds' : 16843038, - 'maxWidth' : 16843039, - 'maxHeight' : 16843040, - 'tint' : 16843041, - 'baselineAlignBottom' : 16843042, - 'cropToPadding' : 16843043, - 'textOn' : 16843044, - 'textOff' : 16843045, - 'baselineAligned' : 16843046, - 'baselineAlignedChildIndex' : 16843047, - 'weightSum' : 16843048, - 'divider' : 16843049, - 'dividerHeight' : 16843050, - 'choiceMode' : 16843051, - 'itemTextAppearance' : 16843052, - 'horizontalDivider' : 16843053, - 'verticalDivider' : 16843054, - 'headerBackground' : 16843055, - 'itemBackground' : 16843056, - 'itemIconDisabledAlpha' : 16843057, - 'rowHeight' : 16843058, - 'maxRows' : 16843059, - 'maxItemsPerRow' : 16843060, - 'moreIcon' : 16843061, - 'max' : 16843062, - 'progress' : 16843063, - 'secondaryProgress' : 16843064, - 'indeterminate' : 16843065, - 'indeterminateOnly' : 16843066, - 'indeterminateDrawable' : 16843067, - 'progressDrawable' : 16843068, - 'indeterminateDuration' : 16843069, - 'indeterminateBehavior' : 16843070, - 'minWidth' : 16843071, - 'minHeight' : 16843072, - 'interpolator' : 16843073, - 'thumb' : 16843074, - 'thumbOffset' : 16843075, - 'numStars' : 16843076, - 'rating' : 16843077, - 'stepSize' : 16843078, - 'isIndicator' : 16843079, - 'checkedButton' : 16843080, - 'stretchColumns' : 16843081, - 'shrinkColumns' : 16843082, - 'collapseColumns' : 16843083, - 'layout_column' : 16843084, - 'layout_span' : 16843085, - 'bufferType' : 16843086, - 'text' : 16843087, - 'hint' : 16843088, - 'textScaleX' : 16843089, - 'cursorVisible' : 16843090, - 'maxLines' : 16843091, - 'lines' : 16843092, - 'height' : 16843093, - 'minLines' : 16843094, - 'maxEms' : 16843095, - 'ems' : 16843096, - 'width' : 16843097, - 'minEms' : 16843098, - 'scrollHorizontally' : 16843099, - 'password' : 16843100, - 'singleLine' : 16843101, - 'selectAllOnFocus' : 16843102, - 'includeFontPadding' : 16843103, - 'maxLength' : 16843104, - 'shadowColor' : 16843105, - 'shadowDx' : 16843106, - 'shadowDy' : 16843107, - 'shadowRadius' : 16843108, - 'numeric' : 16843109, - 'digits' : 16843110, - 'phoneNumber' : 16843111, - 'inputMethod' : 16843112, - 'capitalize' : 16843113, - 'autoText' : 16843114, - 'editable' : 16843115, - 'freezesText' : 16843116, - 'drawableTop' : 16843117, - 'drawableBottom' : 16843118, - 'drawableLeft' : 16843119, - 'drawableRight' : 16843120, - 'drawablePadding' : 16843121, - 'completionHint' : 16843122, - 'completionHintView' : 16843123, - 'completionThreshold' : 16843124, - 'dropDownSelector' : 16843125, - 'popupBackground' : 16843126, - 'inAnimation' : 16843127, - 'outAnimation' : 16843128, - 'flipInterval' : 16843129, - 'fillViewport' : 16843130, - 'prompt' : 16843131, - 'startYear' : 16843132, - 'endYear' : 16843133, - 'mode' : 16843134, - 'layout_x' : 16843135, - 'layout_y' : 16843136, - 'layout_weight' : 16843137, - 'layout_toLeftOf' : 16843138, - 'layout_toRightOf' : 16843139, - 'layout_above' : 16843140, - 'layout_below' : 16843141, - 'layout_alignBaseline' : 16843142, - 'layout_alignLeft' : 16843143, - 'layout_alignTop' : 16843144, - 'layout_alignRight' : 16843145, - 'layout_alignBottom' : 16843146, - 'layout_alignParentLeft' : 16843147, - 'layout_alignParentTop' : 16843148, - 'layout_alignParentRight' : 16843149, - 'layout_alignParentBottom' : 16843150, - 'layout_centerInParent' : 16843151, - 'layout_centerHorizontal' : 16843152, - 'layout_centerVertical' : 16843153, - 'layout_alignWithParentIfMissing' : 16843154, - 'layout_scale' : 16843155, - 'visible' : 16843156, - 'variablePadding' : 16843157, - 'constantSize' : 16843158, - 'oneshot' : 16843159, - 'duration' : 16843160, - 'drawable' : 16843161, - 'shape' : 16843162, - 'innerRadiusRatio' : 16843163, - 'thicknessRatio' : 16843164, - 'startColor' : 16843165, - 'endColor' : 16843166, - 'useLevel' : 16843167, - 'angle' : 16843168, - 'type' : 16843169, - 'centerX' : 16843170, - 'centerY' : 16843171, - 'gradientRadius' : 16843172, - 'color' : 16843173, - 'dashWidth' : 16843174, - 'dashGap' : 16843175, - 'radius' : 16843176, - 'topLeftRadius' : 16843177, - 'topRightRadius' : 16843178, - 'bottomLeftRadius' : 16843179, - 'bottomRightRadius' : 16843180, - 'left' : 16843181, - 'top' : 16843182, - 'right' : 16843183, - 'bottom' : 16843184, - 'minLevel' : 16843185, - 'maxLevel' : 16843186, - 'fromDegrees' : 16843187, - 'toDegrees' : 16843188, - 'pivotX' : 16843189, - 'pivotY' : 16843190, - 'insetLeft' : 16843191, - 'insetRight' : 16843192, - 'insetTop' : 16843193, - 'insetBottom' : 16843194, - 'shareInterpolator' : 16843195, - 'fillBefore' : 16843196, - 'fillAfter' : 16843197, - 'startOffset' : 16843198, - 'repeatCount' : 16843199, - 'repeatMode' : 16843200, - 'zAdjustment' : 16843201, - 'fromXScale' : 16843202, - 'toXScale' : 16843203, - 'fromYScale' : 16843204, - 'toYScale' : 16843205, - 'fromXDelta' : 16843206, - 'toXDelta' : 16843207, - 'fromYDelta' : 16843208, - 'toYDelta' : 16843209, - 'fromAlpha' : 16843210, - 'toAlpha' : 16843211, - 'delay' : 16843212, - 'animation' : 16843213, - 'animationOrder' : 16843214, - 'columnDelay' : 16843215, - 'rowDelay' : 16843216, - 'direction' : 16843217, - 'directionPriority' : 16843218, - 'factor' : 16843219, - 'cycles' : 16843220, - 'searchMode' : 16843221, - 'searchSuggestAuthority' : 16843222, - 'searchSuggestPath' : 16843223, - 'searchSuggestSelection' : 16843224, - 'searchSuggestIntentAction' : 16843225, - 'searchSuggestIntentData' : 16843226, - 'queryActionMsg' : 16843227, - 'suggestActionMsg' : 16843228, - 'suggestActionMsgColumn' : 16843229, - 'menuCategory' : 16843230, - 'orderInCategory' : 16843231, - 'checkableBehavior' : 16843232, - 'title' : 16843233, - 'titleCondensed' : 16843234, - 'alphabeticShortcut' : 16843235, - 'numericShortcut' : 16843236, - 'checkable' : 16843237, - 'selectable' : 16843238, - 'orderingFromXml' : 16843239, - 'key' : 16843240, - 'summary' : 16843241, - 'order' : 16843242, - 'widgetLayout' : 16843243, - 'dependency' : 16843244, - 'defaultValue' : 16843245, - 'shouldDisableView' : 16843246, - 'summaryOn' : 16843247, - 'summaryOff' : 16843248, - 'disableDependentsState' : 16843249, - 'dialogTitle' : 16843250, - 'dialogMessage' : 16843251, - 'dialogIcon' : 16843252, - 'positiveButtonText' : 16843253, - 'negativeButtonText' : 16843254, - 'dialogLayout' : 16843255, - 'entryValues' : 16843256, - 'ringtoneType' : 16843257, - 'showDefault' : 16843258, - 'showSilent' : 16843259, - 'scaleWidth' : 16843260, - 'scaleHeight' : 16843261, - 'scaleGravity' : 16843262, - 'ignoreGravity' : 16843263, - 'foregroundGravity' : 16843264, - 'tileMode' : 16843265, - 'targetActivity' : 16843266, - 'alwaysRetainTaskState' : 16843267, - 'allowTaskReparenting' : 16843268, - 'searchButtonText' : 16843269, - 'colorForegroundInverse' : 16843270, - 'textAppearanceButton' : 16843271, - 'listSeparatorTextViewStyle' : 16843272, - 'streamType' : 16843273, - 'clipOrientation' : 16843274, - 'centerColor' : 16843275, - 'minSdkVersion' : 16843276, - 'windowFullscreen' : 16843277, - 'unselectedAlpha' : 16843278, - 'progressBarStyleSmallTitle' : 16843279, - 'ratingBarStyleIndicator' : 16843280, - 'apiKey' : 16843281, - 'textColorTertiary' : 16843282, - 'textColorTertiaryInverse' : 16843283, - 'listDivider' : 16843284, - 'soundEffectsEnabled' : 16843285, - 'keepScreenOn' : 16843286, - 'lineSpacingExtra' : 16843287, - 'lineSpacingMultiplier' : 16843288, - 'listChoiceIndicatorSingle' : 16843289, - 'listChoiceIndicatorMultiple' : 16843290, - 'versionCode' : 16843291, - 'versionName' : 16843292, - 'marqueeRepeatLimit' : 16843293, - 'windowNoDisplay' : 16843294, - 'backgroundDimEnabled' : 16843295, - 'inputType' : 16843296, - 'isDefault' : 16843297, - 'windowDisablePreview' : 16843298, - 'privateImeOptions' : 16843299, - 'editorExtras' : 16843300, - 'settingsActivity' : 16843301, - 'fastScrollEnabled' : 16843302, - 'reqTouchScreen' : 16843303, - 'reqKeyboardType' : 16843304, - 'reqHardKeyboard' : 16843305, - 'reqNavigation' : 16843306, - 'windowSoftInputMode' : 16843307, - 'imeFullscreenBackground' : 16843308, - 'noHistory' : 16843309, - 'headerDividersEnabled' : 16843310, - 'footerDividersEnabled' : 16843311, - 'candidatesTextStyleSpans' : 16843312, - 'smoothScrollbar' : 16843313, - 'reqFiveWayNav' : 16843314, - 'keyBackground' : 16843315, - 'keyTextSize' : 16843316, - 'labelTextSize' : 16843317, - 'keyTextColor' : 16843318, - 'keyPreviewLayout' : 16843319, - 'keyPreviewOffset' : 16843320, - 'keyPreviewHeight' : 16843321, - 'verticalCorrection' : 16843322, - 'popupLayout' : 16843323, - 'state_long_pressable' : 16843324, - 'keyWidth' : 16843325, - 'keyHeight' : 16843326, - 'horizontalGap' : 16843327, - 'verticalGap' : 16843328, - 'rowEdgeFlags' : 16843329, - 'codes' : 16843330, - 'popupKeyboard' : 16843331, - 'popupCharacters' : 16843332, - 'keyEdgeFlags' : 16843333, - 'isModifier' : 16843334, - 'isSticky' : 16843335, - 'isRepeatable' : 16843336, - 'iconPreview' : 16843337, - 'keyOutputText' : 16843338, - 'keyLabel' : 16843339, - 'keyIcon' : 16843340, - 'keyboardMode' : 16843341, - 'isScrollContainer' : 16843342, - 'fillEnabled' : 16843343, - 'updatePeriodMillis' : 16843344, - 'initialLayout' : 16843345, - 'voiceSearchMode' : 16843346, - 'voiceLanguageModel' : 16843347, - 'voicePromptText' : 16843348, - 'voiceLanguage' : 16843349, - 'voiceMaxResults' : 16843350, - 'bottomOffset' : 16843351, - 'topOffset' : 16843352, - 'allowSingleTap' : 16843353, - 'handle' : 16843354, - 'content' : 16843355, - 'animateOnClick' : 16843356, - 'configure' : 16843357, - 'hapticFeedbackEnabled' : 16843358, - 'innerRadius' : 16843359, - 'thickness' : 16843360, - 'sharedUserLabel' : 16843361, - 'dropDownWidth' : 16843362, - 'dropDownAnchor' : 16843363, - 'imeOptions' : 16843364, - 'imeActionLabel' : 16843365, - 'imeActionId' : 16843366, - 'imeExtractEnterAnimation' : 16843368, - 'imeExtractExitAnimation' : 16843369, - 'tension' : 16843370, - 'extraTension' : 16843371, - 'anyDensity' : 16843372, - 'searchSuggestThreshold' : 16843373, - 'includeInGlobalSearch' : 16843374, - 'onClick' : 16843375, - 'targetSdkVersion' : 16843376, - 'maxSdkVersion' : 16843377, - 'testOnly' : 16843378, - 'contentDescription' : 16843379, - 'gestureStrokeWidth' : 16843380, - 'gestureColor' : 16843381, - 'uncertainGestureColor' : 16843382, - 'fadeOffset' : 16843383, - 'fadeDuration' : 16843384, - 'gestureStrokeType' : 16843385, - 'gestureStrokeLengthThreshold' : 16843386, - 'gestureStrokeSquarenessThreshold' : 16843387, - 'gestureStrokeAngleThreshold' : 16843388, - 'eventsInterceptionEnabled' : 16843389, - 'fadeEnabled' : 16843390, - 'backupAgent' : 16843391, - 'allowBackup' : 16843392, - 'glEsVersion' : 16843393, - 'queryAfterZeroResults' : 16843394, - 'dropDownHeight' : 16843395, - 'smallScreens' : 16843396, - 'normalScreens' : 16843397, - 'largeScreens' : 16843398, - 'progressBarStyleInverse' : 16843399, - 'progressBarStyleSmallInverse' : 16843400, - 'progressBarStyleLargeInverse' : 16843401, - 'searchSettingsDescription' : 16843402, - 'textColorPrimaryInverseDisableOnly' : 16843403, - 'autoUrlDetect' : 16843404, - 'resizeable' : 16843405, - 'required' : 16843406, - 'accountType' : 16843407, - 'contentAuthority' : 16843408, - 'userVisible' : 16843409, - 'windowShowWallpaper' : 16843410, - 'wallpaperOpenEnterAnimation' : 16843411, - 'wallpaperOpenExitAnimation' : 16843412, - 'wallpaperCloseEnterAnimation' : 16843413, - 'wallpaperCloseExitAnimation' : 16843414, - 'wallpaperIntraOpenEnterAnimation' : 16843415, - 'wallpaperIntraOpenExitAnimation' : 16843416, - 'wallpaperIntraCloseEnterAnimation' : 16843417, - 'wallpaperIntraCloseExitAnimation' : 16843418, - 'supportsUploading' : 16843419, - 'killAfterRestore' : 16843420, - 'restoreNeedsApplication' : 16843421, - 'smallIcon' : 16843422, - 'accountPreferences' : 16843423, - 'textAppearanceSearchResultSubtitle' : 16843424, - 'textAppearanceSearchResultTitle' : 16843425, - 'summaryColumn' : 16843426, - 'detailColumn' : 16843427, - 'detailSocialSummary' : 16843428, - 'thumbnail' : 16843429, - 'detachWallpaper' : 16843430, - 'finishOnCloseSystemDialogs' : 16843431, - 'scrollbarFadeDuration' : 16843432, - 'scrollbarDefaultDelayBeforeFade' : 16843433, - 'fadeScrollbars' : 16843434, - 'colorBackgroundCacheHint' : 16843435, - 'dropDownHorizontalOffset' : 16843436, - 'dropDownVerticalOffset' : 16843437, - 'quickContactBadgeStyleWindowSmall' : 16843438, - 'quickContactBadgeStyleWindowMedium' : 16843439, - 'quickContactBadgeStyleWindowLarge' : 16843440, - 'quickContactBadgeStyleSmallWindowSmall' : 16843441, - 'quickContactBadgeStyleSmallWindowMedium' : 16843442, - 'quickContactBadgeStyleSmallWindowLarge' : 16843443, - 'author' : 16843444, - 'autoStart' : 16843445, - 'expandableListViewWhiteStyle' : 16843446, - 'installLocation' : 16843447, - 'vmSafeMode' : 16843448, - 'webTextViewStyle' : 16843449, - 'restoreAnyVersion' : 16843450, - 'tabStripLeft' : 16843451, - 'tabStripRight' : 16843452, - 'tabStripEnabled' : 16843453, - 'logo' : 16843454, - 'xlargeScreens' : 16843455, - 'immersive' : 16843456, - 'overScrollMode' : 16843457, - 'overScrollHeader' : 16843458, - 'overScrollFooter' : 16843459, - 'filterTouchesWhenObscured' : 16843460, - 'textSelectHandleLeft' : 16843461, - 'textSelectHandleRight' : 16843462, - 'textSelectHandle' : 16843463, - 'textSelectHandleWindowStyle' : 16843464, - 'popupAnimationStyle' : 16843465, - 'screenSize' : 16843466, - 'screenDensity' : 16843467, - 'allContactsName' : 16843468, - 'windowActionBar' : 16843469, - 'actionBarStyle' : 16843470, - 'navigationMode' : 16843471, - 'displayOptions' : 16843472, - 'subtitle' : 16843473, - 'customNavigationLayout' : 16843474, - 'hardwareAccelerated' : 16843475, - 'measureWithLargestChild' : 16843476, - 'animateFirstView' : 16843477, - 'dropDownSpinnerStyle' : 16843478, - 'actionDropDownStyle' : 16843479, - 'actionButtonStyle' : 16843480, - 'showAsAction' : 16843481, - 'previewImage' : 16843482, - 'actionModeBackground' : 16843483, - 'actionModeCloseDrawable' : 16843484, - 'windowActionModeOverlay' : 16843485, - 'valueFrom' : 16843486, - 'valueTo' : 16843487, - 'valueType' : 16843488, - 'propertyName' : 16843489, - 'ordering' : 16843490, - 'fragment' : 16843491, - 'windowActionBarOverlay' : 16843492, - 'fragmentOpenEnterAnimation' : 16843493, - 'fragmentOpenExitAnimation' : 16843494, - 'fragmentCloseEnterAnimation' : 16843495, - 'fragmentCloseExitAnimation' : 16843496, - 'fragmentFadeEnterAnimation' : 16843497, - 'fragmentFadeExitAnimation' : 16843498, - 'actionBarSize' : 16843499, - 'imeSubtypeLocale' : 16843500, - 'imeSubtypeMode' : 16843501, - 'imeSubtypeExtraValue' : 16843502, - 'splitMotionEvents' : 16843503, - 'listChoiceBackgroundIndicator' : 16843504, - 'spinnerMode' : 16843505, - 'animateLayoutChanges' : 16843506, - 'actionBarTabStyle' : 16843507, - 'actionBarTabBarStyle' : 16843508, - 'actionBarTabTextStyle' : 16843509, - 'actionOverflowButtonStyle' : 16843510, - 'actionModeCloseButtonStyle' : 16843511, - 'titleTextStyle' : 16843512, - 'subtitleTextStyle' : 16843513, - 'iconifiedByDefault' : 16843514, - 'actionLayout' : 16843515, - 'actionViewClass' : 16843516, - 'activatedBackgroundIndicator' : 16843517, - 'state_activated' : 16843518, - 'listPopupWindowStyle' : 16843519, - 'popupMenuStyle' : 16843520, - 'textAppearanceLargePopupMenu' : 16843521, - 'textAppearanceSmallPopupMenu' : 16843522, - 'breadCrumbTitle' : 16843523, - 'breadCrumbShortTitle' : 16843524, - 'listDividerAlertDialog' : 16843525, - 'textColorAlertDialogListItem' : 16843526, - 'loopViews' : 16843527, - 'dialogTheme' : 16843528, - 'alertDialogTheme' : 16843529, - 'dividerVertical' : 16843530, - 'homeAsUpIndicator' : 16843531, - 'enterFadeDuration' : 16843532, - 'exitFadeDuration' : 16843533, - 'selectableItemBackground' : 16843534, - 'autoAdvanceViewId' : 16843535, - 'useIntrinsicSizeAsMinimum' : 16843536, - 'actionModeCutDrawable' : 16843537, - 'actionModeCopyDrawable' : 16843538, - 'actionModePasteDrawable' : 16843539, - 'textEditPasteWindowLayout' : 16843540, - 'textEditNoPasteWindowLayout' : 16843541, - 'textIsSelectable' : 16843542, - 'windowEnableSplitTouch' : 16843543, - 'indeterminateProgressStyle' : 16843544, - 'progressBarPadding' : 16843545, - 'animationResolution' : 16843546, - 'state_accelerated' : 16843547, - 'baseline' : 16843548, - 'homeLayout' : 16843549, - 'opacity' : 16843550, - 'alpha' : 16843551, - 'transformPivotX' : 16843552, - 'transformPivotY' : 16843553, - 'translationX' : 16843554, - 'translationY' : 16843555, - 'scaleX' : 16843556, - 'scaleY' : 16843557, - 'rotation' : 16843558, - 'rotationX' : 16843559, - 'rotationY' : 16843560, - 'showDividers' : 16843561, - 'dividerPadding' : 16843562, - 'borderlessButtonStyle' : 16843563, - 'dividerHorizontal' : 16843564, - 'itemPadding' : 16843565, - 'buttonBarStyle' : 16843566, - 'buttonBarButtonStyle' : 16843567, - 'segmentedButtonStyle' : 16843568, - 'staticWallpaperPreview' : 16843569, - 'allowParallelSyncs' : 16843570, - 'isAlwaysSyncable' : 16843571, - 'verticalScrollbarPosition' : 16843572, - 'fastScrollAlwaysVisible' : 16843573, - 'fastScrollThumbDrawable' : 16843574, - 'fastScrollPreviewBackgroundLeft' : 16843575, - 'fastScrollPreviewBackgroundRight' : 16843576, - 'fastScrollTrackDrawable' : 16843577, - 'fastScrollOverlayPosition' : 16843578, - 'customTokens' : 16843579, - 'nextFocusForward' : 16843580, - 'firstDayOfWeek' : 16843581, - 'showWeekNumber' : 16843582, - 'minDate' : 16843583, - 'maxDate' : 16843584, - 'shownWeekCount' : 16843585, - 'selectedWeekBackgroundColor' : 16843586, - 'focusedMonthDateColor' : 16843587, - 'unfocusedMonthDateColor' : 16843588, - 'weekNumberColor' : 16843589, - 'weekSeparatorLineColor' : 16843590, - 'selectedDateVerticalBar' : 16843591, - 'weekDayTextAppearance' : 16843592, - 'dateTextAppearance' : 16843593, - 'solidColor' : 16843594, - 'spinnersShown' : 16843595, - 'calendarViewShown' : 16843596, - 'state_multiline' : 16843597, - 'detailsElementBackground' : 16843598, - 'textColorHighlightInverse' : 16843599, - 'textColorLinkInverse' : 16843600, - 'editTextColor' : 16843601, - 'editTextBackground' : 16843602, - 'horizontalScrollViewStyle' : 16843603, - 'layerType' : 16843604, - 'alertDialogIcon' : 16843605, - 'windowMinWidthMajor' : 16843606, - 'windowMinWidthMinor' : 16843607, - 'queryHint' : 16843608, - 'fastScrollTextColor' : 16843609, - 'largeHeap' : 16843610, - 'windowCloseOnTouchOutside' : 16843611, - 'datePickerStyle' : 16843612, - 'calendarViewStyle' : 16843613, - 'textEditSidePasteWindowLayout' : 16843614, - 'textEditSideNoPasteWindowLayout' : 16843615, - 'actionMenuTextAppearance' : 16843616, - 'actionMenuTextColor' : 16843617, - 'textCursorDrawable' : 16843618, - 'resizeMode' : 16843619, - 'requiresSmallestWidthDp' : 16843620, - 'compatibleWidthLimitDp' : 16843621, - 'largestWidthLimitDp' : 16843622, - 'state_hovered' : 16843623, - 'state_drag_can_accept' : 16843624, - 'state_drag_hovered' : 16843625, - 'stopWithTask' : 16843626, - 'switchTextOn' : 16843627, - 'switchTextOff' : 16843628, - 'switchPreferenceStyle' : 16843629, - 'switchTextAppearance' : 16843630, - 'track' : 16843631, - 'switchMinWidth' : 16843632, - 'switchPadding' : 16843633, - 'thumbTextPadding' : 16843634, - 'textSuggestionsWindowStyle' : 16843635, - 'textEditSuggestionItemLayout' : 16843636, - 'rowCount' : 16843637, - 'rowOrderPreserved' : 16843638, - 'columnCount' : 16843639, - 'columnOrderPreserved' : 16843640, - 'useDefaultMargins' : 16843641, - 'alignmentMode' : 16843642, - 'layout_row' : 16843643, - 'layout_rowSpan' : 16843644, - 'layout_columnSpan' : 16843645, - 'actionModeSelectAllDrawable' : 16843646, - 'isAuxiliary' : 16843647, - 'accessibilityEventTypes' : 16843648, - 'packageNames' : 16843649, - 'accessibilityFeedbackType' : 16843650, - 'notificationTimeout' : 16843651, - 'accessibilityFlags' : 16843652, - 'canRetrieveWindowContent' : 16843653, - 'listPreferredItemHeightLarge' : 16843654, - 'listPreferredItemHeightSmall' : 16843655, - 'actionBarSplitStyle' : 16843656, - 'actionProviderClass' : 16843657, - 'backgroundStacked' : 16843658, - 'backgroundSplit' : 16843659, - 'textAllCaps' : 16843660, - 'colorPressedHighlight' : 16843661, - 'colorLongPressedHighlight' : 16843662, - 'colorFocusedHighlight' : 16843663, - 'colorActivatedHighlight' : 16843664, - 'colorMultiSelectHighlight' : 16843665, - 'drawableStart' : 16843666, - 'drawableEnd' : 16843667, - 'actionModeStyle' : 16843668, - 'minResizeWidth' : 16843669, - 'minResizeHeight' : 16843670, - 'actionBarWidgetTheme' : 16843671, - 'uiOptions' : 16843672, - 'subtypeLocale' : 16843673, - 'subtypeExtraValue' : 16843674, - 'actionBarDivider' : 16843675, - 'actionBarItemBackground' : 16843676, - 'actionModeSplitBackground' : 16843677, - 'textAppearanceListItem' : 16843678, - 'textAppearanceListItemSmall' : 16843679, - 'targetDescriptions' : 16843680, - 'directionDescriptions' : 16843681, - 'overridesImplicitlyEnabledSubtype' : 16843682, - 'listPreferredItemPaddingLeft' : 16843683, - 'listPreferredItemPaddingRight' : 16843684, - 'requiresFadingEdge' : 16843685, - 'publicKey' : 16843686, - 'parentActivityName' : 16843687, - 'isolatedProcess' : 16843689, - 'importantForAccessibility' : 16843690, - 'keyboardLayout' : 16843691, - 'fontFamily' : 16843692, - 'mediaRouteButtonStyle' : 16843693, - 'mediaRouteTypes' : 16843694, - 'supportsRtl' : 16843695, - 'textDirection' : 16843696, - 'textAlignment' : 16843697, - 'layoutDirection' : 16843698, - 'paddingStart' : 16843699, - 'paddingEnd' : 16843700, - 'layout_marginStart' : 16843701, - 'layout_marginEnd' : 16843702, - 'layout_toStartOf' : 16843703, - 'layout_toEndOf' : 16843704, - 'layout_alignStart' : 16843705, - 'layout_alignEnd' : 16843706, - 'layout_alignParentStart' : 16843707, - 'layout_alignParentEnd' : 16843708, - 'listPreferredItemPaddingStart' : 16843709, - 'listPreferredItemPaddingEnd' : 16843710, - 'singleUser' : 16843711, - 'presentationTheme' : 16843712, - 'subtypeId' : 16843713, - 'initialKeyguardLayout' : 16843714, - 'widgetCategory' : 16843716, - 'permissionGroupFlags' : 16843717, - 'labelFor' : 16843718, - 'permissionFlags' : 16843719, - 'checkedTextViewStyle' : 16843720, - 'showOnLockScreen' : 16843721, - 'format12Hour' : 16843722, - 'format24Hour' : 16843723, - 'timeZone' : 16843724, - 'mipMap' : 16843725, - 'mirrorForRtl' : 16843726, - 'windowOverscan' : 16843727, - 'requiredForAllUsers' : 16843728, - 'indicatorStart' : 16843729, - 'indicatorEnd' : 16843730, - 'childIndicatorStart' : 16843731, - 'childIndicatorEnd' : 16843732, - 'restrictedAccountType' : 16843733, - 'requiredAccountType' : 16843734, - 'canRequestTouchExplorationMode' : 16843735, - 'canRequestEnhancedWebAccessibility' : 16843736, - 'canRequestFilterKeyEvents' : 16843737, - 'layoutMode' : 16843738, - 'keySet' : 16843739, - 'targetId' : 16843740, - 'fromScene' : 16843741, - 'toScene' : 16843742, - 'transition' : 16843743, - 'transitionOrdering' : 16843744, - 'fadingMode' : 16843745, - 'startDelay' : 16843746, - 'ssp' : 16843747, - 'sspPrefix' : 16843748, - 'sspPattern' : 16843749, - 'addPrintersActivity' : 16843750, - 'vendor' : 16843751, - 'category' : 16843752, - 'isAsciiCapable' : 16843753, - 'autoMirrored' : 16843754, - 'supportsSwitchingToNextInputMethod' : 16843755, - 'requireDeviceUnlock' : 16843756, - 'apduServiceBanner' : 16843757, - 'accessibilityLiveRegion' : 16843758, - 'windowTranslucentStatus' : 16843759, - 'windowTranslucentNavigation' : 16843760, - 'advancedPrintOptionsActivity' : 16843761, - 'banner' : 16843762, - 'windowSwipeToDismiss' : 16843763, - 'isGame' : 16843764, - 'allowEmbedded' : 16843765, - 'setupActivity' : 16843766, - 'fastScrollStyle' : 16843767, - 'windowContentTransitions' : 16843768, - 'windowContentTransitionManager' : 16843769, - 'translationZ' : 16843770, - 'tintMode' : 16843771, - 'controlX1' : 16843772, - 'controlY1' : 16843773, - 'controlX2' : 16843774, - 'controlY2' : 16843775, - 'transitionName' : 16843776, - 'transitionGroup' : 16843777, - 'viewportWidth' : 16843778, - 'viewportHeight' : 16843779, - 'fillColor' : 16843780, - 'pathData' : 16843781, - 'strokeColor' : 16843782, - 'strokeWidth' : 16843783, - 'trimPathStart' : 16843784, - 'trimPathEnd' : 16843785, - 'trimPathOffset' : 16843786, - 'strokeLineCap' : 16843787, - 'strokeLineJoin' : 16843788, - 'strokeMiterLimit' : 16843789, - 'colorControlNormal' : 16843817, - 'colorControlActivated' : 16843818, - 'colorButtonNormal' : 16843819, - 'colorControlHighlight' : 16843820, - 'persistableMode' : 16843821, - 'titleTextAppearance' : 16843822, - 'subtitleTextAppearance' : 16843823, - 'slideEdge' : 16843824, - 'actionBarTheme' : 16843825, - 'textAppearanceListItemSecondary' : 16843826, - 'colorPrimary' : 16843827, - 'colorPrimaryDark' : 16843828, - 'colorAccent' : 16843829, - 'nestedScrollingEnabled' : 16843830, - 'windowEnterTransition' : 16843831, - 'windowExitTransition' : 16843832, - 'windowSharedElementEnterTransition' : 16843833, - 'windowSharedElementExitTransition' : 16843834, - 'windowAllowReturnTransitionOverlap' : 16843835, - 'windowAllowEnterTransitionOverlap' : 16843836, - 'sessionService' : 16843837, - 'stackViewStyle' : 16843838, - 'switchStyle' : 16843839, - 'elevation' : 16843840, - 'excludeId' : 16843841, - 'excludeClass' : 16843842, - 'hideOnContentScroll' : 16843843, - 'actionOverflowMenuStyle' : 16843844, - 'documentLaunchMode' : 16843845, - 'maxRecents' : 16843846, - 'autoRemoveFromRecents' : 16843847, - 'stateListAnimator' : 16843848, - 'toId' : 16843849, - 'fromId' : 16843850, - 'reversible' : 16843851, - 'splitTrack' : 16843852, - 'targetName' : 16843853, - 'excludeName' : 16843854, - 'matchOrder' : 16843855, - 'windowDrawsSystemBarBackgrounds' : 16843856, - 'statusBarColor' : 16843857, - 'navigationBarColor' : 16843858, - 'contentInsetStart' : 16843859, - 'contentInsetEnd' : 16843860, - 'contentInsetLeft' : 16843861, - 'contentInsetRight' : 16843862, - 'paddingMode' : 16843863, - 'layout_rowWeight' : 16843864, - 'layout_columnWeight' : 16843865, - 'translateX' : 16843866, - 'translateY' : 16843867, - 'selectableItemBackgroundBorderless' : 16843868, - 'elegantTextHeight' : 16843869, - 'searchKeyphraseId' : 16843870, - 'searchKeyphrase' : 16843871, - 'searchKeyphraseSupportedLocales' : 16843872, - 'windowTransitionBackgroundFadeDuration' : 16843873, - 'overlapAnchor' : 16843874, - 'progressTint' : 16843875, - 'progressTintMode' : 16843876, - 'progressBackgroundTint' : 16843877, - 'progressBackgroundTintMode' : 16843878, - 'secondaryProgressTint' : 16843879, - 'secondaryProgressTintMode' : 16843880, - 'indeterminateTint' : 16843881, - 'indeterminateTintMode' : 16843882, - 'backgroundTint' : 16843883, - 'backgroundTintMode' : 16843884, - 'foregroundTint' : 16843885, - 'foregroundTintMode' : 16843886, - 'buttonTint' : 16843887, - 'buttonTintMode' : 16843888, - 'thumbTint' : 16843889, - 'thumbTintMode' : 16843890, - 'fullBackupOnly' : 16843891, - 'propertyXName' : 16843892, - 'propertyYName' : 16843893, - 'relinquishTaskIdentity' : 16843894, - 'tileModeX' : 16843895, - 'tileModeY' : 16843896, - 'actionModeShareDrawable' : 16843897, - 'actionModeFindDrawable' : 16843898, - 'actionModeWebSearchDrawable' : 16843899, - 'transitionVisibilityMode' : 16843900, - 'minimumHorizontalAngle' : 16843901, - 'minimumVerticalAngle' : 16843902, - 'maximumAngle' : 16843903, - 'searchViewStyle' : 16843904, - 'closeIcon' : 16843905, - 'goIcon' : 16843906, - 'searchIcon' : 16843907, - 'voiceIcon' : 16843908, - 'commitIcon' : 16843909, - 'suggestionRowLayout' : 16843910, - 'queryBackground' : 16843911, - 'submitBackground' : 16843912, - 'buttonBarPositiveButtonStyle' : 16843913, - 'buttonBarNeutralButtonStyle' : 16843914, - 'buttonBarNegativeButtonStyle' : 16843915, - 'popupElevation' : 16843916, - 'actionBarPopupTheme' : 16843917, - 'multiArch' : 16843918, - 'touchscreenBlocksFocus' : 16843919, - 'windowElevation' : 16843920, - 'launchTaskBehindTargetAnimation' : 16843921, - 'launchTaskBehindSourceAnimation' : 16843922, - 'restrictionType' : 16843923, - 'dayOfWeekBackground' : 16843924, - 'dayOfWeekTextAppearance' : 16843925, - 'headerMonthTextAppearance' : 16843926, - 'headerDayOfMonthTextAppearance' : 16843927, - 'headerYearTextAppearance' : 16843928, - 'yearListItemTextAppearance' : 16843929, - 'yearListSelectorColor' : 16843930, - 'calendarTextColor' : 16843931, - 'recognitionService' : 16843932, - 'timePickerStyle' : 16843933, - 'timePickerDialogTheme' : 16843934, - 'headerTimeTextAppearance' : 16843935, - 'headerAmPmTextAppearance' : 16843936, - 'numbersTextColor' : 16843937, - 'numbersBackgroundColor' : 16843938, - 'numbersSelectorColor' : 16843939, - 'amPmTextColor' : 16843940, - 'amPmBackgroundColor' : 16843941, - 'searchKeyphraseRecognitionFlags' : 16843942, - 'checkMarkTint' : 16843943, - 'checkMarkTintMode' : 16843944, - 'popupTheme' : 16843945, - 'toolbarStyle' : 16843946, - 'windowClipToOutline' : 16843947, - 'datePickerDialogTheme' : 16843948, - 'showText' : 16843949, - 'windowReturnTransition' : 16843950, - 'windowReenterTransition' : 16843951, - 'windowSharedElementReturnTransition' : 16843952, - 'windowSharedElementReenterTransition' : 16843953, - 'resumeWhilePausing' : 16843954, - 'datePickerMode' : 16843955, - 'timePickerMode' : 16843956, - 'inset' : 16843957, - 'letterSpacing' : 16843958, - 'fontFeatureSettings' : 16843959, - 'outlineProvider' : 16843960, - 'contentAgeHint' : 16843961, - 'country' : 16843962, - 'windowSharedElementsUseOverlay' : 16843963, - 'reparent' : 16843964, - 'reparentWithOverlay' : 16843965, - 'ambientShadowAlpha' : 16843966, - 'spotShadowAlpha' : 16843967, - 'navigationIcon' : 16843968, - 'navigationContentDescription' : 16843969, - 'fragmentExitTransition' : 16843970, - 'fragmentEnterTransition' : 16843971, - 'fragmentSharedElementEnterTransition' : 16843972, - 'fragmentReturnTransition' : 16843973, - 'fragmentSharedElementReturnTransition' : 16843974, - 'fragmentReenterTransition' : 16843975, - 'fragmentAllowEnterTransitionOverlap' : 16843976, - 'fragmentAllowReturnTransitionOverlap' : 16843977, - 'patternPathData' : 16843978, - 'strokeAlpha' : 16843979, - 'fillAlpha' : 16843980, - 'windowActivityTransitions' : 16843981, - 'colorEdgeEffect' : 16843982 + 'theme': 16842752, + 'label': 16842753, + 'icon': 16842754, + 'name': 16842755, + 'manageSpaceActivity': 16842756, + 'allowClearUserData': 16842757, + 'permission': 16842758, + 'readPermission': 16842759, + 'writePermission': 16842760, + 'protectionLevel': 16842761, + 'permissionGroup': 16842762, + 'sharedUserId': 16842763, + 'hasCode': 16842764, + 'persistent': 16842765, + 'enabled': 16842766, + 'debuggable': 16842767, + 'exported': 16842768, + 'process': 16842769, + 'taskAffinity': 16842770, + 'multiprocess': 16842771, + 'finishOnTaskLaunch': 16842772, + 'clearTaskOnLaunch': 16842773, + 'stateNotNeeded': 16842774, + 'excludeFromRecents': 16842775, + 'authorities': 16842776, + 'syncable': 16842777, + 'initOrder': 16842778, + 'grantUriPermissions': 16842779, + 'priority': 16842780, + 'launchMode': 16842781, + 'screenOrientation': 16842782, + 'configChanges': 16842783, + 'description': 16842784, + 'targetPackage': 16842785, + 'handleProfiling': 16842786, + 'functionalTest': 16842787, + 'value': 16842788, + 'resource': 16842789, + 'mimeType': 16842790, + 'scheme': 16842791, + 'host': 16842792, + 'port': 16842793, + 'path': 16842794, + 'pathPrefix': 16842795, + 'pathPattern': 16842796, + 'action': 16842797, + 'data': 16842798, + 'targetClass': 16842799, + 'colorForeground': 16842800, + 'colorBackground': 16842801, + 'backgroundDimAmount': 16842802, + 'disabledAlpha': 16842803, + 'textAppearance': 16842804, + 'textAppearanceInverse': 16842805, + 'textColorPrimary': 16842806, + 'textColorPrimaryDisableOnly': 16842807, + 'textColorSecondary': 16842808, + 'textColorPrimaryInverse': 16842809, + 'textColorSecondaryInverse': 16842810, + 'textColorPrimaryNoDisable': 16842811, + 'textColorSecondaryNoDisable': 16842812, + 'textColorPrimaryInverseNoDisable': 16842813, + 'textColorSecondaryInverseNoDisable': 16842814, + 'textColorHintInverse': 16842815, + 'textAppearanceLarge': 16842816, + 'textAppearanceMedium': 16842817, + 'textAppearanceSmall': 16842818, + 'textAppearanceLargeInverse': 16842819, + 'textAppearanceMediumInverse': 16842820, + 'textAppearanceSmallInverse': 16842821, + 'textCheckMark': 16842822, + 'textCheckMarkInverse': 16842823, + 'buttonStyle': 16842824, + 'buttonStyleSmall': 16842825, + 'buttonStyleInset': 16842826, + 'buttonStyleToggle': 16842827, + 'galleryItemBackground': 16842828, + 'listPreferredItemHeight': 16842829, + 'expandableListPreferredItemPaddingLeft': 16842830, + 'expandableListPreferredChildPaddingLeft': 16842831, + 'expandableListPreferredItemIndicatorLeft': 16842832, + 'expandableListPreferredItemIndicatorRight': 16842833, + 'expandableListPreferredChildIndicatorLeft': 16842834, + 'expandableListPreferredChildIndicatorRight': 16842835, + 'windowBackground': 16842836, + 'windowFrame': 16842837, + 'windowNoTitle': 16842838, + 'windowIsFloating': 16842839, + 'windowIsTranslucent': 16842840, + 'windowContentOverlay': 16842841, + 'windowTitleSize': 16842842, + 'windowTitleStyle': 16842843, + 'windowTitleBackgroundStyle': 16842844, + 'alertDialogStyle': 16842845, + 'panelBackground': 16842846, + 'panelFullBackground': 16842847, + 'panelColorForeground': 16842848, + 'panelColorBackground': 16842849, + 'panelTextAppearance': 16842850, + 'scrollbarSize': 16842851, + 'scrollbarThumbHorizontal': 16842852, + 'scrollbarThumbVertical': 16842853, + 'scrollbarTrackHorizontal': 16842854, + 'scrollbarTrackVertical': 16842855, + 'scrollbarAlwaysDrawHorizontalTrack': 16842856, + 'scrollbarAlwaysDrawVerticalTrack': 16842857, + 'absListViewStyle': 16842858, + 'autoCompleteTextViewStyle': 16842859, + 'checkboxStyle': 16842860, + 'dropDownListViewStyle': 16842861, + 'editTextStyle': 16842862, + 'expandableListViewStyle': 16842863, + 'galleryStyle': 16842864, + 'gridViewStyle': 16842865, + 'imageButtonStyle': 16842866, + 'imageWellStyle': 16842867, + 'listViewStyle': 16842868, + 'listViewWhiteStyle': 16842869, + 'popupWindowStyle': 16842870, + 'progressBarStyle': 16842871, + 'progressBarStyleHorizontal': 16842872, + 'progressBarStyleSmall': 16842873, + 'progressBarStyleLarge': 16842874, + 'seekBarStyle': 16842875, + 'ratingBarStyle': 16842876, + 'ratingBarStyleSmall': 16842877, + 'radioButtonStyle': 16842878, + 'scrollbarStyle': 16842879, + 'scrollViewStyle': 16842880, + 'spinnerStyle': 16842881, + 'starStyle': 16842882, + 'tabWidgetStyle': 16842883, + 'textViewStyle': 16842884, + 'webViewStyle': 16842885, + 'dropDownItemStyle': 16842886, + 'spinnerDropDownItemStyle': 16842887, + 'dropDownHintAppearance': 16842888, + 'spinnerItemStyle': 16842889, + 'mapViewStyle': 16842890, + 'preferenceScreenStyle': 16842891, + 'preferenceCategoryStyle': 16842892, + 'preferenceInformationStyle': 16842893, + 'preferenceStyle': 16842894, + 'checkBoxPreferenceStyle': 16842895, + 'yesNoPreferenceStyle': 16842896, + 'dialogPreferenceStyle': 16842897, + 'editTextPreferenceStyle': 16842898, + 'ringtonePreferenceStyle': 16842899, + 'preferenceLayoutChild': 16842900, + 'textSize': 16842901, + 'typeface': 16842902, + 'textStyle': 16842903, + 'textColor': 16842904, + 'textColorHighlight': 16842905, + 'textColorHint': 16842906, + 'textColorLink': 16842907, + 'state_focused': 16842908, + 'state_window_focused': 16842909, + 'state_enabled': 16842910, + 'state_checkable': 16842911, + 'state_checked': 16842912, + 'state_selected': 16842913, + 'state_active': 16842914, + 'state_single': 16842915, + 'state_first': 16842916, + 'state_middle': 16842917, + 'state_last': 16842918, + 'state_pressed': 16842919, + 'state_expanded': 16842920, + 'state_empty': 16842921, + 'state_above_anchor': 16842922, + 'ellipsize': 16842923, + 'x': 16842924, + 'y': 16842925, + 'windowAnimationStyle': 16842926, + 'gravity': 16842927, + 'autoLink': 16842928, + 'linksClickable': 16842929, + 'entries': 16842930, + 'layout_gravity': 16842931, + 'windowEnterAnimation': 16842932, + 'windowExitAnimation': 16842933, + 'windowShowAnimation': 16842934, + 'windowHideAnimation': 16842935, + 'activityOpenEnterAnimation': 16842936, + 'activityOpenExitAnimation': 16842937, + 'activityCloseEnterAnimation': 16842938, + 'activityCloseExitAnimation': 16842939, + 'taskOpenEnterAnimation': 16842940, + 'taskOpenExitAnimation': 16842941, + 'taskCloseEnterAnimation': 16842942, + 'taskCloseExitAnimation': 16842943, + 'taskToFrontEnterAnimation': 16842944, + 'taskToFrontExitAnimation': 16842945, + 'taskToBackEnterAnimation': 16842946, + 'taskToBackExitAnimation': 16842947, + 'orientation': 16842948, + 'keycode': 16842949, + 'fullDark': 16842950, + 'topDark': 16842951, + 'centerDark': 16842952, + 'bottomDark': 16842953, + 'fullBright': 16842954, + 'topBright': 16842955, + 'centerBright': 16842956, + 'bottomBright': 16842957, + 'bottomMedium': 16842958, + 'centerMedium': 16842959, + 'id': 16842960, + 'tag': 16842961, + 'scrollX': 16842962, + 'scrollY': 16842963, + 'background': 16842964, + 'padding': 16842965, + 'paddingLeft': 16842966, + 'paddingTop': 16842967, + 'paddingRight': 16842968, + 'paddingBottom': 16842969, + 'focusable': 16842970, + 'focusableInTouchMode': 16842971, + 'visibility': 16842972, + 'fitsSystemWindows': 16842973, + 'scrollbars': 16842974, + 'fadingEdge': 16842975, + 'fadingEdgeLength': 16842976, + 'nextFocusLeft': 16842977, + 'nextFocusRight': 16842978, + 'nextFocusUp': 16842979, + 'nextFocusDown': 16842980, + 'clickable': 16842981, + 'longClickable': 16842982, + 'saveEnabled': 16842983, + 'drawingCacheQuality': 16842984, + 'duplicateParentState': 16842985, + 'clipChildren': 16842986, + 'clipToPadding': 16842987, + 'layoutAnimation': 16842988, + 'animationCache': 16842989, + 'persistentDrawingCache': 16842990, + 'alwaysDrawnWithCache': 16842991, + 'addStatesFromChildren': 16842992, + 'descendantFocusability': 16842993, + 'layout': 16842994, + 'inflatedId': 16842995, + 'layout_width': 16842996, + 'layout_height': 16842997, + 'layout_margin': 16842998, + 'layout_marginLeft': 16842999, + 'layout_marginTop': 16843000, + 'layout_marginRight': 16843001, + 'layout_marginBottom': 16843002, + 'listSelector': 16843003, + 'drawSelectorOnTop': 16843004, + 'stackFromBottom': 16843005, + 'scrollingCache': 16843006, + 'textFilterEnabled': 16843007, + 'transcriptMode': 16843008, + 'cacheColorHint': 16843009, + 'dial': 16843010, + 'hand_hour': 16843011, + 'hand_minute': 16843012, + 'format': 16843013, + 'checked': 16843014, + 'button': 16843015, + 'checkMark': 16843016, + 'foreground': 16843017, + 'measureAllChildren': 16843018, + 'groupIndicator': 16843019, + 'childIndicator': 16843020, + 'indicatorLeft': 16843021, + 'indicatorRight': 16843022, + 'childIndicatorLeft': 16843023, + 'childIndicatorRight': 16843024, + 'childDivider': 16843025, + 'animationDuration': 16843026, + 'spacing': 16843027, + 'horizontalSpacing': 16843028, + 'verticalSpacing': 16843029, + 'stretchMode': 16843030, + 'columnWidth': 16843031, + 'numColumns': 16843032, + 'src': 16843033, + 'antialias': 16843034, + 'filter': 16843035, + 'dither': 16843036, + 'scaleType': 16843037, + 'adjustViewBounds': 16843038, + 'maxWidth': 16843039, + 'maxHeight': 16843040, + 'tint': 16843041, + 'baselineAlignBottom': 16843042, + 'cropToPadding': 16843043, + 'textOn': 16843044, + 'textOff': 16843045, + 'baselineAligned': 16843046, + 'baselineAlignedChildIndex': 16843047, + 'weightSum': 16843048, + 'divider': 16843049, + 'dividerHeight': 16843050, + 'choiceMode': 16843051, + 'itemTextAppearance': 16843052, + 'horizontalDivider': 16843053, + 'verticalDivider': 16843054, + 'headerBackground': 16843055, + 'itemBackground': 16843056, + 'itemIconDisabledAlpha': 16843057, + 'rowHeight': 16843058, + 'maxRows': 16843059, + 'maxItemsPerRow': 16843060, + 'moreIcon': 16843061, + 'max': 16843062, + 'progress': 16843063, + 'secondaryProgress': 16843064, + 'indeterminate': 16843065, + 'indeterminateOnly': 16843066, + 'indeterminateDrawable': 16843067, + 'progressDrawable': 16843068, + 'indeterminateDuration': 16843069, + 'indeterminateBehavior': 16843070, + 'minWidth': 16843071, + 'minHeight': 16843072, + 'interpolator': 16843073, + 'thumb': 16843074, + 'thumbOffset': 16843075, + 'numStars': 16843076, + 'rating': 16843077, + 'stepSize': 16843078, + 'isIndicator': 16843079, + 'checkedButton': 16843080, + 'stretchColumns': 16843081, + 'shrinkColumns': 16843082, + 'collapseColumns': 16843083, + 'layout_column': 16843084, + 'layout_span': 16843085, + 'bufferType': 16843086, + 'text': 16843087, + 'hint': 16843088, + 'textScaleX': 16843089, + 'cursorVisible': 16843090, + 'maxLines': 16843091, + 'lines': 16843092, + 'height': 16843093, + 'minLines': 16843094, + 'maxEms': 16843095, + 'ems': 16843096, + 'width': 16843097, + 'minEms': 16843098, + 'scrollHorizontally': 16843099, + 'password': 16843100, + 'singleLine': 16843101, + 'selectAllOnFocus': 16843102, + 'includeFontPadding': 16843103, + 'maxLength': 16843104, + 'shadowColor': 16843105, + 'shadowDx': 16843106, + 'shadowDy': 16843107, + 'shadowRadius': 16843108, + 'numeric': 16843109, + 'digits': 16843110, + 'phoneNumber': 16843111, + 'inputMethod': 16843112, + 'capitalize': 16843113, + 'autoText': 16843114, + 'editable': 16843115, + 'freezesText': 16843116, + 'drawableTop': 16843117, + 'drawableBottom': 16843118, + 'drawableLeft': 16843119, + 'drawableRight': 16843120, + 'drawablePadding': 16843121, + 'completionHint': 16843122, + 'completionHintView': 16843123, + 'completionThreshold': 16843124, + 'dropDownSelector': 16843125, + 'popupBackground': 16843126, + 'inAnimation': 16843127, + 'outAnimation': 16843128, + 'flipInterval': 16843129, + 'fillViewport': 16843130, + 'prompt': 16843131, + 'startYear': 16843132, + 'endYear': 16843133, + 'mode': 16843134, + 'layout_x': 16843135, + 'layout_y': 16843136, + 'layout_weight': 16843137, + 'layout_toLeftOf': 16843138, + 'layout_toRightOf': 16843139, + 'layout_above': 16843140, + 'layout_below': 16843141, + 'layout_alignBaseline': 16843142, + 'layout_alignLeft': 16843143, + 'layout_alignTop': 16843144, + 'layout_alignRight': 16843145, + 'layout_alignBottom': 16843146, + 'layout_alignParentLeft': 16843147, + 'layout_alignParentTop': 16843148, + 'layout_alignParentRight': 16843149, + 'layout_alignParentBottom': 16843150, + 'layout_centerInParent': 16843151, + 'layout_centerHorizontal': 16843152, + 'layout_centerVertical': 16843153, + 'layout_alignWithParentIfMissing': 16843154, + 'layout_scale': 16843155, + 'visible': 16843156, + 'variablePadding': 16843157, + 'constantSize': 16843158, + 'oneshot': 16843159, + 'duration': 16843160, + 'drawable': 16843161, + 'shape': 16843162, + 'innerRadiusRatio': 16843163, + 'thicknessRatio': 16843164, + 'startColor': 16843165, + 'endColor': 16843166, + 'useLevel': 16843167, + 'angle': 16843168, + 'type': 16843169, + 'centerX': 16843170, + 'centerY': 16843171, + 'gradientRadius': 16843172, + 'color': 16843173, + 'dashWidth': 16843174, + 'dashGap': 16843175, + 'radius': 16843176, + 'topLeftRadius': 16843177, + 'topRightRadius': 16843178, + 'bottomLeftRadius': 16843179, + 'bottomRightRadius': 16843180, + 'left': 16843181, + 'top': 16843182, + 'right': 16843183, + 'bottom': 16843184, + 'minLevel': 16843185, + 'maxLevel': 16843186, + 'fromDegrees': 16843187, + 'toDegrees': 16843188, + 'pivotX': 16843189, + 'pivotY': 16843190, + 'insetLeft': 16843191, + 'insetRight': 16843192, + 'insetTop': 16843193, + 'insetBottom': 16843194, + 'shareInterpolator': 16843195, + 'fillBefore': 16843196, + 'fillAfter': 16843197, + 'startOffset': 16843198, + 'repeatCount': 16843199, + 'repeatMode': 16843200, + 'zAdjustment': 16843201, + 'fromXScale': 16843202, + 'toXScale': 16843203, + 'fromYScale': 16843204, + 'toYScale': 16843205, + 'fromXDelta': 16843206, + 'toXDelta': 16843207, + 'fromYDelta': 16843208, + 'toYDelta': 16843209, + 'fromAlpha': 16843210, + 'toAlpha': 16843211, + 'delay': 16843212, + 'animation': 16843213, + 'animationOrder': 16843214, + 'columnDelay': 16843215, + 'rowDelay': 16843216, + 'direction': 16843217, + 'directionPriority': 16843218, + 'factor': 16843219, + 'cycles': 16843220, + 'searchMode': 16843221, + 'searchSuggestAuthority': 16843222, + 'searchSuggestPath': 16843223, + 'searchSuggestSelection': 16843224, + 'searchSuggestIntentAction': 16843225, + 'searchSuggestIntentData': 16843226, + 'queryActionMsg': 16843227, + 'suggestActionMsg': 16843228, + 'suggestActionMsgColumn': 16843229, + 'menuCategory': 16843230, + 'orderInCategory': 16843231, + 'checkableBehavior': 16843232, + 'title': 16843233, + 'titleCondensed': 16843234, + 'alphabeticShortcut': 16843235, + 'numericShortcut': 16843236, + 'checkable': 16843237, + 'selectable': 16843238, + 'orderingFromXml': 16843239, + 'key': 16843240, + 'summary': 16843241, + 'order': 16843242, + 'widgetLayout': 16843243, + 'dependency': 16843244, + 'defaultValue': 16843245, + 'shouldDisableView': 16843246, + 'summaryOn': 16843247, + 'summaryOff': 16843248, + 'disableDependentsState': 16843249, + 'dialogTitle': 16843250, + 'dialogMessage': 16843251, + 'dialogIcon': 16843252, + 'positiveButtonText': 16843253, + 'negativeButtonText': 16843254, + 'dialogLayout': 16843255, + 'entryValues': 16843256, + 'ringtoneType': 16843257, + 'showDefault': 16843258, + 'showSilent': 16843259, + 'scaleWidth': 16843260, + 'scaleHeight': 16843261, + 'scaleGravity': 16843262, + 'ignoreGravity': 16843263, + 'foregroundGravity': 16843264, + 'tileMode': 16843265, + 'targetActivity': 16843266, + 'alwaysRetainTaskState': 16843267, + 'allowTaskReparenting': 16843268, + 'searchButtonText': 16843269, + 'colorForegroundInverse': 16843270, + 'textAppearanceButton': 16843271, + 'listSeparatorTextViewStyle': 16843272, + 'streamType': 16843273, + 'clipOrientation': 16843274, + 'centerColor': 16843275, + 'minSdkVersion': 16843276, + 'windowFullscreen': 16843277, + 'unselectedAlpha': 16843278, + 'progressBarStyleSmallTitle': 16843279, + 'ratingBarStyleIndicator': 16843280, + 'apiKey': 16843281, + 'textColorTertiary': 16843282, + 'textColorTertiaryInverse': 16843283, + 'listDivider': 16843284, + 'soundEffectsEnabled': 16843285, + 'keepScreenOn': 16843286, + 'lineSpacingExtra': 16843287, + 'lineSpacingMultiplier': 16843288, + 'listChoiceIndicatorSingle': 16843289, + 'listChoiceIndicatorMultiple': 16843290, + 'versionCode': 16843291, + 'versionName': 16843292, + 'marqueeRepeatLimit': 16843293, + 'windowNoDisplay': 16843294, + 'backgroundDimEnabled': 16843295, + 'inputType': 16843296, + 'isDefault': 16843297, + 'windowDisablePreview': 16843298, + 'privateImeOptions': 16843299, + 'editorExtras': 16843300, + 'settingsActivity': 16843301, + 'fastScrollEnabled': 16843302, + 'reqTouchScreen': 16843303, + 'reqKeyboardType': 16843304, + 'reqHardKeyboard': 16843305, + 'reqNavigation': 16843306, + 'windowSoftInputMode': 16843307, + 'imeFullscreenBackground': 16843308, + 'noHistory': 16843309, + 'headerDividersEnabled': 16843310, + 'footerDividersEnabled': 16843311, + 'candidatesTextStyleSpans': 16843312, + 'smoothScrollbar': 16843313, + 'reqFiveWayNav': 16843314, + 'keyBackground': 16843315, + 'keyTextSize': 16843316, + 'labelTextSize': 16843317, + 'keyTextColor': 16843318, + 'keyPreviewLayout': 16843319, + 'keyPreviewOffset': 16843320, + 'keyPreviewHeight': 16843321, + 'verticalCorrection': 16843322, + 'popupLayout': 16843323, + 'state_long_pressable': 16843324, + 'keyWidth': 16843325, + 'keyHeight': 16843326, + 'horizontalGap': 16843327, + 'verticalGap': 16843328, + 'rowEdgeFlags': 16843329, + 'codes': 16843330, + 'popupKeyboard': 16843331, + 'popupCharacters': 16843332, + 'keyEdgeFlags': 16843333, + 'isModifier': 16843334, + 'isSticky': 16843335, + 'isRepeatable': 16843336, + 'iconPreview': 16843337, + 'keyOutputText': 16843338, + 'keyLabel': 16843339, + 'keyIcon': 16843340, + 'keyboardMode': 16843341, + 'isScrollContainer': 16843342, + 'fillEnabled': 16843343, + 'updatePeriodMillis': 16843344, + 'initialLayout': 16843345, + 'voiceSearchMode': 16843346, + 'voiceLanguageModel': 16843347, + 'voicePromptText': 16843348, + 'voiceLanguage': 16843349, + 'voiceMaxResults': 16843350, + 'bottomOffset': 16843351, + 'topOffset': 16843352, + 'allowSingleTap': 16843353, + 'handle': 16843354, + 'content': 16843355, + 'animateOnClick': 16843356, + 'configure': 16843357, + 'hapticFeedbackEnabled': 16843358, + 'innerRadius': 16843359, + 'thickness': 16843360, + 'sharedUserLabel': 16843361, + 'dropDownWidth': 16843362, + 'dropDownAnchor': 16843363, + 'imeOptions': 16843364, + 'imeActionLabel': 16843365, + 'imeActionId': 16843366, + 'imeExtractEnterAnimation': 16843368, + 'imeExtractExitAnimation': 16843369, + 'tension': 16843370, + 'extraTension': 16843371, + 'anyDensity': 16843372, + 'searchSuggestThreshold': 16843373, + 'includeInGlobalSearch': 16843374, + 'onClick': 16843375, + 'targetSdkVersion': 16843376, + 'maxSdkVersion': 16843377, + 'testOnly': 16843378, + 'contentDescription': 16843379, + 'gestureStrokeWidth': 16843380, + 'gestureColor': 16843381, + 'uncertainGestureColor': 16843382, + 'fadeOffset': 16843383, + 'fadeDuration': 16843384, + 'gestureStrokeType': 16843385, + 'gestureStrokeLengthThreshold': 16843386, + 'gestureStrokeSquarenessThreshold': 16843387, + 'gestureStrokeAngleThreshold': 16843388, + 'eventsInterceptionEnabled': 16843389, + 'fadeEnabled': 16843390, + 'backupAgent': 16843391, + 'allowBackup': 16843392, + 'glEsVersion': 16843393, + 'queryAfterZeroResults': 16843394, + 'dropDownHeight': 16843395, + 'smallScreens': 16843396, + 'normalScreens': 16843397, + 'largeScreens': 16843398, + 'progressBarStyleInverse': 16843399, + 'progressBarStyleSmallInverse': 16843400, + 'progressBarStyleLargeInverse': 16843401, + 'searchSettingsDescription': 16843402, + 'textColorPrimaryInverseDisableOnly': 16843403, + 'autoUrlDetect': 16843404, + 'resizeable': 16843405, + 'required': 16843406, + 'accountType': 16843407, + 'contentAuthority': 16843408, + 'userVisible': 16843409, + 'windowShowWallpaper': 16843410, + 'wallpaperOpenEnterAnimation': 16843411, + 'wallpaperOpenExitAnimation': 16843412, + 'wallpaperCloseEnterAnimation': 16843413, + 'wallpaperCloseExitAnimation': 16843414, + 'wallpaperIntraOpenEnterAnimation': 16843415, + 'wallpaperIntraOpenExitAnimation': 16843416, + 'wallpaperIntraCloseEnterAnimation': 16843417, + 'wallpaperIntraCloseExitAnimation': 16843418, + 'supportsUploading': 16843419, + 'killAfterRestore': 16843420, + 'restoreNeedsApplication': 16843421, + 'smallIcon': 16843422, + 'accountPreferences': 16843423, + 'textAppearanceSearchResultSubtitle': 16843424, + 'textAppearanceSearchResultTitle': 16843425, + 'summaryColumn': 16843426, + 'detailColumn': 16843427, + 'detailSocialSummary': 16843428, + 'thumbnail': 16843429, + 'detachWallpaper': 16843430, + 'finishOnCloseSystemDialogs': 16843431, + 'scrollbarFadeDuration': 16843432, + 'scrollbarDefaultDelayBeforeFade': 16843433, + 'fadeScrollbars': 16843434, + 'colorBackgroundCacheHint': 16843435, + 'dropDownHorizontalOffset': 16843436, + 'dropDownVerticalOffset': 16843437, + 'quickContactBadgeStyleWindowSmall': 16843438, + 'quickContactBadgeStyleWindowMedium': 16843439, + 'quickContactBadgeStyleWindowLarge': 16843440, + 'quickContactBadgeStyleSmallWindowSmall': 16843441, + 'quickContactBadgeStyleSmallWindowMedium': 16843442, + 'quickContactBadgeStyleSmallWindowLarge': 16843443, + 'author': 16843444, + 'autoStart': 16843445, + 'expandableListViewWhiteStyle': 16843446, + 'installLocation': 16843447, + 'vmSafeMode': 16843448, + 'webTextViewStyle': 16843449, + 'restoreAnyVersion': 16843450, + 'tabStripLeft': 16843451, + 'tabStripRight': 16843452, + 'tabStripEnabled': 16843453, + 'logo': 16843454, + 'xlargeScreens': 16843455, + 'immersive': 16843456, + 'overScrollMode': 16843457, + 'overScrollHeader': 16843458, + 'overScrollFooter': 16843459, + 'filterTouchesWhenObscured': 16843460, + 'textSelectHandleLeft': 16843461, + 'textSelectHandleRight': 16843462, + 'textSelectHandle': 16843463, + 'textSelectHandleWindowStyle': 16843464, + 'popupAnimationStyle': 16843465, + 'screenSize': 16843466, + 'screenDensity': 16843467, + 'allContactsName': 16843468, + 'windowActionBar': 16843469, + 'actionBarStyle': 16843470, + 'navigationMode': 16843471, + 'displayOptions': 16843472, + 'subtitle': 16843473, + 'customNavigationLayout': 16843474, + 'hardwareAccelerated': 16843475, + 'measureWithLargestChild': 16843476, + 'animateFirstView': 16843477, + 'dropDownSpinnerStyle': 16843478, + 'actionDropDownStyle': 16843479, + 'actionButtonStyle': 16843480, + 'showAsAction': 16843481, + 'previewImage': 16843482, + 'actionModeBackground': 16843483, + 'actionModeCloseDrawable': 16843484, + 'windowActionModeOverlay': 16843485, + 'valueFrom': 16843486, + 'valueTo': 16843487, + 'valueType': 16843488, + 'propertyName': 16843489, + 'ordering': 16843490, + 'fragment': 16843491, + 'windowActionBarOverlay': 16843492, + 'fragmentOpenEnterAnimation': 16843493, + 'fragmentOpenExitAnimation': 16843494, + 'fragmentCloseEnterAnimation': 16843495, + 'fragmentCloseExitAnimation': 16843496, + 'fragmentFadeEnterAnimation': 16843497, + 'fragmentFadeExitAnimation': 16843498, + 'actionBarSize': 16843499, + 'imeSubtypeLocale': 16843500, + 'imeSubtypeMode': 16843501, + 'imeSubtypeExtraValue': 16843502, + 'splitMotionEvents': 16843503, + 'listChoiceBackgroundIndicator': 16843504, + 'spinnerMode': 16843505, + 'animateLayoutChanges': 16843506, + 'actionBarTabStyle': 16843507, + 'actionBarTabBarStyle': 16843508, + 'actionBarTabTextStyle': 16843509, + 'actionOverflowButtonStyle': 16843510, + 'actionModeCloseButtonStyle': 16843511, + 'titleTextStyle': 16843512, + 'subtitleTextStyle': 16843513, + 'iconifiedByDefault': 16843514, + 'actionLayout': 16843515, + 'actionViewClass': 16843516, + 'activatedBackgroundIndicator': 16843517, + 'state_activated': 16843518, + 'listPopupWindowStyle': 16843519, + 'popupMenuStyle': 16843520, + 'textAppearanceLargePopupMenu': 16843521, + 'textAppearanceSmallPopupMenu': 16843522, + 'breadCrumbTitle': 16843523, + 'breadCrumbShortTitle': 16843524, + 'listDividerAlertDialog': 16843525, + 'textColorAlertDialogListItem': 16843526, + 'loopViews': 16843527, + 'dialogTheme': 16843528, + 'alertDialogTheme': 16843529, + 'dividerVertical': 16843530, + 'homeAsUpIndicator': 16843531, + 'enterFadeDuration': 16843532, + 'exitFadeDuration': 16843533, + 'selectableItemBackground': 16843534, + 'autoAdvanceViewId': 16843535, + 'useIntrinsicSizeAsMinimum': 16843536, + 'actionModeCutDrawable': 16843537, + 'actionModeCopyDrawable': 16843538, + 'actionModePasteDrawable': 16843539, + 'textEditPasteWindowLayout': 16843540, + 'textEditNoPasteWindowLayout': 16843541, + 'textIsSelectable': 16843542, + 'windowEnableSplitTouch': 16843543, + 'indeterminateProgressStyle': 16843544, + 'progressBarPadding': 16843545, + 'animationResolution': 16843546, + 'state_accelerated': 16843547, + 'baseline': 16843548, + 'homeLayout': 16843549, + 'opacity': 16843550, + 'alpha': 16843551, + 'transformPivotX': 16843552, + 'transformPivotY': 16843553, + 'translationX': 16843554, + 'translationY': 16843555, + 'scaleX': 16843556, + 'scaleY': 16843557, + 'rotation': 16843558, + 'rotationX': 16843559, + 'rotationY': 16843560, + 'showDividers': 16843561, + 'dividerPadding': 16843562, + 'borderlessButtonStyle': 16843563, + 'dividerHorizontal': 16843564, + 'itemPadding': 16843565, + 'buttonBarStyle': 16843566, + 'buttonBarButtonStyle': 16843567, + 'segmentedButtonStyle': 16843568, + 'staticWallpaperPreview': 16843569, + 'allowParallelSyncs': 16843570, + 'isAlwaysSyncable': 16843571, + 'verticalScrollbarPosition': 16843572, + 'fastScrollAlwaysVisible': 16843573, + 'fastScrollThumbDrawable': 16843574, + 'fastScrollPreviewBackgroundLeft': 16843575, + 'fastScrollPreviewBackgroundRight': 16843576, + 'fastScrollTrackDrawable': 16843577, + 'fastScrollOverlayPosition': 16843578, + 'customTokens': 16843579, + 'nextFocusForward': 16843580, + 'firstDayOfWeek': 16843581, + 'showWeekNumber': 16843582, + 'minDate': 16843583, + 'maxDate': 16843584, + 'shownWeekCount': 16843585, + 'selectedWeekBackgroundColor': 16843586, + 'focusedMonthDateColor': 16843587, + 'unfocusedMonthDateColor': 16843588, + 'weekNumberColor': 16843589, + 'weekSeparatorLineColor': 16843590, + 'selectedDateVerticalBar': 16843591, + 'weekDayTextAppearance': 16843592, + 'dateTextAppearance': 16843593, + 'solidColor': 16843594, + 'spinnersShown': 16843595, + 'calendarViewShown': 16843596, + 'state_multiline': 16843597, + 'detailsElementBackground': 16843598, + 'textColorHighlightInverse': 16843599, + 'textColorLinkInverse': 16843600, + 'editTextColor': 16843601, + 'editTextBackground': 16843602, + 'horizontalScrollViewStyle': 16843603, + 'layerType': 16843604, + 'alertDialogIcon': 16843605, + 'windowMinWidthMajor': 16843606, + 'windowMinWidthMinor': 16843607, + 'queryHint': 16843608, + 'fastScrollTextColor': 16843609, + 'largeHeap': 16843610, + 'windowCloseOnTouchOutside': 16843611, + 'datePickerStyle': 16843612, + 'calendarViewStyle': 16843613, + 'textEditSidePasteWindowLayout': 16843614, + 'textEditSideNoPasteWindowLayout': 16843615, + 'actionMenuTextAppearance': 16843616, + 'actionMenuTextColor': 16843617, + 'textCursorDrawable': 16843618, + 'resizeMode': 16843619, + 'requiresSmallestWidthDp': 16843620, + 'compatibleWidthLimitDp': 16843621, + 'largestWidthLimitDp': 16843622, + 'state_hovered': 16843623, + 'state_drag_can_accept': 16843624, + 'state_drag_hovered': 16843625, + 'stopWithTask': 16843626, + 'switchTextOn': 16843627, + 'switchTextOff': 16843628, + 'switchPreferenceStyle': 16843629, + 'switchTextAppearance': 16843630, + 'track': 16843631, + 'switchMinWidth': 16843632, + 'switchPadding': 16843633, + 'thumbTextPadding': 16843634, + 'textSuggestionsWindowStyle': 16843635, + 'textEditSuggestionItemLayout': 16843636, + 'rowCount': 16843637, + 'rowOrderPreserved': 16843638, + 'columnCount': 16843639, + 'columnOrderPreserved': 16843640, + 'useDefaultMargins': 16843641, + 'alignmentMode': 16843642, + 'layout_row': 16843643, + 'layout_rowSpan': 16843644, + 'layout_columnSpan': 16843645, + 'actionModeSelectAllDrawable': 16843646, + 'isAuxiliary': 16843647, + 'accessibilityEventTypes': 16843648, + 'packageNames': 16843649, + 'accessibilityFeedbackType': 16843650, + 'notificationTimeout': 16843651, + 'accessibilityFlags': 16843652, + 'canRetrieveWindowContent': 16843653, + 'listPreferredItemHeightLarge': 16843654, + 'listPreferredItemHeightSmall': 16843655, + 'actionBarSplitStyle': 16843656, + 'actionProviderClass': 16843657, + 'backgroundStacked': 16843658, + 'backgroundSplit': 16843659, + 'textAllCaps': 16843660, + 'colorPressedHighlight': 16843661, + 'colorLongPressedHighlight': 16843662, + 'colorFocusedHighlight': 16843663, + 'colorActivatedHighlight': 16843664, + 'colorMultiSelectHighlight': 16843665, + 'drawableStart': 16843666, + 'drawableEnd': 16843667, + 'actionModeStyle': 16843668, + 'minResizeWidth': 16843669, + 'minResizeHeight': 16843670, + 'actionBarWidgetTheme': 16843671, + 'uiOptions': 16843672, + 'subtypeLocale': 16843673, + 'subtypeExtraValue': 16843674, + 'actionBarDivider': 16843675, + 'actionBarItemBackground': 16843676, + 'actionModeSplitBackground': 16843677, + 'textAppearanceListItem': 16843678, + 'textAppearanceListItemSmall': 16843679, + 'targetDescriptions': 16843680, + 'directionDescriptions': 16843681, + 'overridesImplicitlyEnabledSubtype': 16843682, + 'listPreferredItemPaddingLeft': 16843683, + 'listPreferredItemPaddingRight': 16843684, + 'requiresFadingEdge': 16843685, + 'publicKey': 16843686, + 'parentActivityName': 16843687, + 'isolatedProcess': 16843689, + 'importantForAccessibility': 16843690, + 'keyboardLayout': 16843691, + 'fontFamily': 16843692, + 'mediaRouteButtonStyle': 16843693, + 'mediaRouteTypes': 16843694, + 'supportsRtl': 16843695, + 'textDirection': 16843696, + 'textAlignment': 16843697, + 'layoutDirection': 16843698, + 'paddingStart': 16843699, + 'paddingEnd': 16843700, + 'layout_marginStart': 16843701, + 'layout_marginEnd': 16843702, + 'layout_toStartOf': 16843703, + 'layout_toEndOf': 16843704, + 'layout_alignStart': 16843705, + 'layout_alignEnd': 16843706, + 'layout_alignParentStart': 16843707, + 'layout_alignParentEnd': 16843708, + 'listPreferredItemPaddingStart': 16843709, + 'listPreferredItemPaddingEnd': 16843710, + 'singleUser': 16843711, + 'presentationTheme': 16843712, + 'subtypeId': 16843713, + 'initialKeyguardLayout': 16843714, + 'widgetCategory': 16843716, + 'permissionGroupFlags': 16843717, + 'labelFor': 16843718, + 'permissionFlags': 16843719, + 'checkedTextViewStyle': 16843720, + 'showOnLockScreen': 16843721, + 'format12Hour': 16843722, + 'format24Hour': 16843723, + 'timeZone': 16843724, + 'mipMap': 16843725, + 'mirrorForRtl': 16843726, + 'windowOverscan': 16843727, + 'requiredForAllUsers': 16843728, + 'indicatorStart': 16843729, + 'indicatorEnd': 16843730, + 'childIndicatorStart': 16843731, + 'childIndicatorEnd': 16843732, + 'restrictedAccountType': 16843733, + 'requiredAccountType': 16843734, + 'canRequestTouchExplorationMode': 16843735, + 'canRequestEnhancedWebAccessibility': 16843736, + 'canRequestFilterKeyEvents': 16843737, + 'layoutMode': 16843738, + 'keySet': 16843739, + 'targetId': 16843740, + 'fromScene': 16843741, + 'toScene': 16843742, + 'transition': 16843743, + 'transitionOrdering': 16843744, + 'fadingMode': 16843745, + 'startDelay': 16843746, + 'ssp': 16843747, + 'sspPrefix': 16843748, + 'sspPattern': 16843749, + 'addPrintersActivity': 16843750, + 'vendor': 16843751, + 'category': 16843752, + 'isAsciiCapable': 16843753, + 'autoMirrored': 16843754, + 'supportsSwitchingToNextInputMethod': 16843755, + 'requireDeviceUnlock': 16843756, + 'apduServiceBanner': 16843757, + 'accessibilityLiveRegion': 16843758, + 'windowTranslucentStatus': 16843759, + 'windowTranslucentNavigation': 16843760, + 'advancedPrintOptionsActivity': 16843761, + 'banner': 16843762, + 'windowSwipeToDismiss': 16843763, + 'isGame': 16843764, + 'allowEmbedded': 16843765, + 'setupActivity': 16843766, + 'fastScrollStyle': 16843767, + 'windowContentTransitions': 16843768, + 'windowContentTransitionManager': 16843769, + 'translationZ': 16843770, + 'tintMode': 16843771, + 'controlX1': 16843772, + 'controlY1': 16843773, + 'controlX2': 16843774, + 'controlY2': 16843775, + 'transitionName': 16843776, + 'transitionGroup': 16843777, + 'viewportWidth': 16843778, + 'viewportHeight': 16843779, + 'fillColor': 16843780, + 'pathData': 16843781, + 'strokeColor': 16843782, + 'strokeWidth': 16843783, + 'trimPathStart': 16843784, + 'trimPathEnd': 16843785, + 'trimPathOffset': 16843786, + 'strokeLineCap': 16843787, + 'strokeLineJoin': 16843788, + 'strokeMiterLimit': 16843789, + 'colorControlNormal': 16843817, + 'colorControlActivated': 16843818, + 'colorButtonNormal': 16843819, + 'colorControlHighlight': 16843820, + 'persistableMode': 16843821, + 'titleTextAppearance': 16843822, + 'subtitleTextAppearance': 16843823, + 'slideEdge': 16843824, + 'actionBarTheme': 16843825, + 'textAppearanceListItemSecondary': 16843826, + 'colorPrimary': 16843827, + 'colorPrimaryDark': 16843828, + 'colorAccent': 16843829, + 'nestedScrollingEnabled': 16843830, + 'windowEnterTransition': 16843831, + 'windowExitTransition': 16843832, + 'windowSharedElementEnterTransition': 16843833, + 'windowSharedElementExitTransition': 16843834, + 'windowAllowReturnTransitionOverlap': 16843835, + 'windowAllowEnterTransitionOverlap': 16843836, + 'sessionService': 16843837, + 'stackViewStyle': 16843838, + 'switchStyle': 16843839, + 'elevation': 16843840, + 'excludeId': 16843841, + 'excludeClass': 16843842, + 'hideOnContentScroll': 16843843, + 'actionOverflowMenuStyle': 16843844, + 'documentLaunchMode': 16843845, + 'maxRecents': 16843846, + 'autoRemoveFromRecents': 16843847, + 'stateListAnimator': 16843848, + 'toId': 16843849, + 'fromId': 16843850, + 'reversible': 16843851, + 'splitTrack': 16843852, + 'targetName': 16843853, + 'excludeName': 16843854, + 'matchOrder': 16843855, + 'windowDrawsSystemBarBackgrounds': 16843856, + 'statusBarColor': 16843857, + 'navigationBarColor': 16843858, + 'contentInsetStart': 16843859, + 'contentInsetEnd': 16843860, + 'contentInsetLeft': 16843861, + 'contentInsetRight': 16843862, + 'paddingMode': 16843863, + 'layout_rowWeight': 16843864, + 'layout_columnWeight': 16843865, + 'translateX': 16843866, + 'translateY': 16843867, + 'selectableItemBackgroundBorderless': 16843868, + 'elegantTextHeight': 16843869, + 'searchKeyphraseId': 16843870, + 'searchKeyphrase': 16843871, + 'searchKeyphraseSupportedLocales': 16843872, + 'windowTransitionBackgroundFadeDuration': 16843873, + 'overlapAnchor': 16843874, + 'progressTint': 16843875, + 'progressTintMode': 16843876, + 'progressBackgroundTint': 16843877, + 'progressBackgroundTintMode': 16843878, + 'secondaryProgressTint': 16843879, + 'secondaryProgressTintMode': 16843880, + 'indeterminateTint': 16843881, + 'indeterminateTintMode': 16843882, + 'backgroundTint': 16843883, + 'backgroundTintMode': 16843884, + 'foregroundTint': 16843885, + 'foregroundTintMode': 16843886, + 'buttonTint': 16843887, + 'buttonTintMode': 16843888, + 'thumbTint': 16843889, + 'thumbTintMode': 16843890, + 'fullBackupOnly': 16843891, + 'propertyXName': 16843892, + 'propertyYName': 16843893, + 'relinquishTaskIdentity': 16843894, + 'tileModeX': 16843895, + 'tileModeY': 16843896, + 'actionModeShareDrawable': 16843897, + 'actionModeFindDrawable': 16843898, + 'actionModeWebSearchDrawable': 16843899, + 'transitionVisibilityMode': 16843900, + 'minimumHorizontalAngle': 16843901, + 'minimumVerticalAngle': 16843902, + 'maximumAngle': 16843903, + 'searchViewStyle': 16843904, + 'closeIcon': 16843905, + 'goIcon': 16843906, + 'searchIcon': 16843907, + 'voiceIcon': 16843908, + 'commitIcon': 16843909, + 'suggestionRowLayout': 16843910, + 'queryBackground': 16843911, + 'submitBackground': 16843912, + 'buttonBarPositiveButtonStyle': 16843913, + 'buttonBarNeutralButtonStyle': 16843914, + 'buttonBarNegativeButtonStyle': 16843915, + 'popupElevation': 16843916, + 'actionBarPopupTheme': 16843917, + 'multiArch': 16843918, + 'touchscreenBlocksFocus': 16843919, + 'windowElevation': 16843920, + 'launchTaskBehindTargetAnimation': 16843921, + 'launchTaskBehindSourceAnimation': 16843922, + 'restrictionType': 16843923, + 'dayOfWeekBackground': 16843924, + 'dayOfWeekTextAppearance': 16843925, + 'headerMonthTextAppearance': 16843926, + 'headerDayOfMonthTextAppearance': 16843927, + 'headerYearTextAppearance': 16843928, + 'yearListItemTextAppearance': 16843929, + 'yearListSelectorColor': 16843930, + 'calendarTextColor': 16843931, + 'recognitionService': 16843932, + 'timePickerStyle': 16843933, + 'timePickerDialogTheme': 16843934, + 'headerTimeTextAppearance': 16843935, + 'headerAmPmTextAppearance': 16843936, + 'numbersTextColor': 16843937, + 'numbersBackgroundColor': 16843938, + 'numbersSelectorColor': 16843939, + 'amPmTextColor': 16843940, + 'amPmBackgroundColor': 16843941, + 'searchKeyphraseRecognitionFlags': 16843942, + 'checkMarkTint': 16843943, + 'checkMarkTintMode': 16843944, + 'popupTheme': 16843945, + 'toolbarStyle': 16843946, + 'windowClipToOutline': 16843947, + 'datePickerDialogTheme': 16843948, + 'showText': 16843949, + 'windowReturnTransition': 16843950, + 'windowReenterTransition': 16843951, + 'windowSharedElementReturnTransition': 16843952, + 'windowSharedElementReenterTransition': 16843953, + 'resumeWhilePausing': 16843954, + 'datePickerMode': 16843955, + 'timePickerMode': 16843956, + 'inset': 16843957, + 'letterSpacing': 16843958, + 'fontFeatureSettings': 16843959, + 'outlineProvider': 16843960, + 'contentAgeHint': 16843961, + 'country': 16843962, + 'windowSharedElementsUseOverlay': 16843963, + 'reparent': 16843964, + 'reparentWithOverlay': 16843965, + 'ambientShadowAlpha': 16843966, + 'spotShadowAlpha': 16843967, + 'navigationIcon': 16843968, + 'navigationContentDescription': 16843969, + 'fragmentExitTransition': 16843970, + 'fragmentEnterTransition': 16843971, + 'fragmentSharedElementEnterTransition': 16843972, + 'fragmentReturnTransition': 16843973, + 'fragmentSharedElementReturnTransition': 16843974, + 'fragmentReenterTransition': 16843975, + 'fragmentAllowEnterTransitionOverlap': 16843976, + 'fragmentAllowReturnTransitionOverlap': 16843977, + 'patternPathData': 16843978, + 'strokeAlpha': 16843979, + 'fillAlpha': 16843980, + 'windowActivityTransitions': 16843981, + 'colorEdgeEffect': 16843982 } } SYSTEM_RESOURCES = { - "attributes": { - "forward": {k: v for k, v in resources['attr'].items()}, - "inverse": {v: k for k, v in resources['attr'].items()} - }, - "styles": { - "forward": {k: v for k, v in resources['style'].items()}, - "inverse": {v: k for k, v in resources['style'].items()} - } + "attributes": { + "forward": {k: v for k, v in resources['attr'].items()}, + "inverse": {v: k for k, v in resources['attr'].items()} + }, + "styles": { + "forward": {k: v for k, v in resources['style'].items()}, + "inverse": {v: k for k, v in resources['style'].items()} + } } diff --git a/androguard/decompiler/dad/ast.py b/androguard/decompiler/dad/ast.py index 5425623a..99974638 100644 --- a/androguard/decompiler/dad/ast.py +++ b/androguard/decompiler/dad/ast.py @@ -90,6 +90,7 @@ def var_decl(typen, var): def dummy(*args): return ['Dummy', args] + ################################################################################ @@ -142,6 +143,7 @@ def _append(sb, stmt): if stmt is not None: sb[2].append(stmt) + ################################################################################ TYPE_DESCRIPTOR = { 'V': 'void', @@ -449,7 +451,6 @@ def visit_ins(op, isCtor=False): class JSONWriter(object): - def __init__(self, graph, method): self.graph = graph self.method = method @@ -624,8 +625,8 @@ class JSONWriter(object): self.add(if_stmt(cond_expr, scopes)) elif follow is not None: - if cond.true in (follow, self.next_case) or\ - cond.num > cond.true.num: + if cond.true in (follow, self.next_case) or \ + cond.num > cond.true.num: # or cond.true.num > cond.false.num: cond.neg() cond.true, cond.false = cond.false, cond.true diff --git a/androguard/decompiler/dad/basic_blocks.py b/androguard/decompiler/dad/basic_blocks.py index 9f2d82c6..06dd315c 100644 --- a/androguard/decompiler/dad/basic_blocks.py +++ b/androguard/decompiler/dad/basic_blocks.py @@ -29,7 +29,6 @@ logger = logging.getLogger('dad.basic_blocks') class BasicBlock(Node): - def __init__(self, name, block_ins): super(BasicBlock, self).__init__(name) self.ins = block_ins @@ -68,7 +67,6 @@ class BasicBlock(Node): class StatementBlock(BasicBlock): - def __init__(self, name, block_ins): super(StatementBlock, self).__init__(name, block_ins) self.type.is_stmt = True @@ -81,7 +79,6 @@ class StatementBlock(BasicBlock): class ReturnBlock(BasicBlock): - def __init__(self, name, block_ins): super(ReturnBlock, self).__init__(name, block_ins) self.type.is_return = True @@ -94,7 +91,6 @@ class ReturnBlock(BasicBlock): class ThrowBlock(BasicBlock): - def __init__(self, name, block_ins): super(ThrowBlock, self).__init__(name, block_ins) self.type.is_throw = True @@ -107,7 +103,6 @@ class ThrowBlock(BasicBlock): class SwitchBlock(BasicBlock): - def __init__(self, name, switch, block_ins): super(SwitchBlock, self).__init__(name, block_ins) self.switch = switch @@ -146,7 +141,6 @@ class SwitchBlock(BasicBlock): class CondBlock(BasicBlock): - def __init__(self, name, block_ins): super(CondBlock, self).__init__(name, block_ins) self.true = None @@ -176,7 +170,6 @@ class CondBlock(BasicBlock): class Condition(object): - def __init__(self, cond1, cond2, isand, isnot): self.cond1 = cond1 self.cond2 = cond2 @@ -213,7 +206,6 @@ class Condition(object): class ShortCircuitBlock(CondBlock): - def __init__(self, name, cond): super(ShortCircuitBlock, self).__init__(name, None) self.cond = cond @@ -235,7 +227,6 @@ class ShortCircuitBlock(CondBlock): class LoopBlock(CondBlock): - def __init__(self, name, cond): super(LoopBlock, self).__init__(name, None) self.cond = cond @@ -272,7 +263,6 @@ class LoopBlock(CondBlock): class TryBlock(BasicBlock): - def __init__(self, node): super(TryBlock, self).__init__('Try-%s' % node.name, None) self.try_start = node @@ -298,7 +288,6 @@ class TryBlock(BasicBlock): class CatchBlock(BasicBlock): - def __init__(self, node): first_ins = node.ins[0] self.exception_ins = None diff --git a/androguard/decompiler/dad/control_flow.py b/androguard/decompiler/dad/control_flow.py index 311bd7ee..b3fa94f8 100644 --- a/androguard/decompiler/dad/control_flow.py +++ b/androguard/decompiler/dad/control_flow.py @@ -54,7 +54,7 @@ def intervals(graph): change = False for node in graph.rpo[1:]: if all( - p in interv_heads[head] for p in graph.all_preds(node)): + p in interv_heads[head] for p in graph.all_preds(node)): change |= interv_heads[head].add_node(node) # At this stage, a node which is not in the interval, but has one @@ -63,7 +63,7 @@ def intervals(graph): for node in graph: if node not in interv_heads[head] and node not in heads: if any( - p in interv_heads[head] for p in graph.all_preds(node)): + p in interv_heads[head] for p in graph.all_preds(node)): edges[interv_heads[head]].append(node) assert (node not in heads) heads.append(node) @@ -165,11 +165,11 @@ def loop_follow(start, end, nodes_in_loop): for node in nodes_in_loop: if node.type.is_cond: if (node.true.num < num_next and - node.true not in nodes_in_loop): + node.true not in nodes_in_loop): follow = node.true num_next = follow.num elif (node.false.num < num_next and - node.false not in nodes_in_loop): + node.false not in nodes_in_loop): follow = node.false num_next = follow.num start.follow['loop'] = follow @@ -239,7 +239,6 @@ def switch_struct(graph, idoms): # TODO: deal with preds which are in catch def short_circuit_struct(graph, idom, node_map): - def MergeNodes(node1, node2, is_and, is_not): lpreds = set() ldests = set() diff --git a/androguard/decompiler/dad/dataflow.py b/androguard/decompiler/dad/dataflow.py index 1ecf833d..4e38b46f 100644 --- a/androguard/decompiler/dad/dataflow.py +++ b/androguard/decompiler/dad/dataflow.py @@ -27,7 +27,6 @@ logger = logging.getLogger('dad.control_flow') class BasicReachDef(object): - def __init__(self, graph, params): self.g = graph self.A = defaultdict(set) @@ -313,7 +312,6 @@ def register_propagation(graph, du, ud): class DummyNode(Node): - def __init__(self, name): super(DummyNode, self).__init__(name) @@ -465,7 +463,7 @@ def place_declarations(graph, dvars, du, ud): for loc, ins in node.get_loc_with_ins(): for var in ins.get_used_vars(): if (not isinstance(dvars[var], Variable) or - isinstance(dvars[var], Param)): + isinstance(dvars[var], Param)): continue var_defs_locs = ud[var, loc] def_nodes = set() diff --git a/androguard/decompiler/dad/decompile.py b/androguard/decompiler/dad/decompile.py index 8363fa09..c02b66d5 100644 --- a/androguard/decompiler/dad/decompile.py +++ b/androguard/decompiler/dad/decompile.py @@ -23,6 +23,7 @@ from builtins import str from builtins import range from builtins import object import sys + sys.path.append('./') import logging @@ -82,7 +83,6 @@ def get_field_ast(field): class DvMethod(object): - def __init__(self, methanalysis): method = methanalysis.get_method() self.method = method @@ -122,7 +122,7 @@ class DvMethod(object): if not __debug__: from androguard.core import bytecode bytecode.method2png('/tmp/dad/graphs/%s#%s.png' % \ - (self.cls_name.split('/')[-1][:-1], self.name), methanalysis) + (self.cls_name.split('/')[-1][:-1], self.name), methanalysis) def process(self, doAST=False): logger.debug('METHOD : %s', self.name) @@ -194,12 +194,11 @@ class DvMethod(object): return [] def __repr__(self): - #return 'Method %s' % self.name + # return 'Method %s' % self.name return 'class DvMethod(object): %s' % self.name class DvClass(object): - def __init__(self, dvclass, vma): name = dvclass.get_name() if name.find('/') > 0: @@ -270,8 +269,8 @@ class DvClass(object): fields = [get_field_ast(f) for f in self.fields] methods = [] for m in self.methods: - if isinstance(m, DvMethod) and m.ast: - methods.append(m.get_ast()) + if isinstance(m, DvMethod) and m.ast: + methods.append(m.get_ast()) isInterface = 'interface' in self.access return { 'rawname': self.thisclass[1:-1], @@ -338,7 +337,7 @@ class DvClass(object): source.append( ('PACKAGE', [('PACKAGE_START', 'package '), ( 'NAME_PACKAGE', '%s' % self.package), ('PACKAGE_END', ';\n') - ])) + ])) list_proto = [] list_proto.append( ('PROTOTYPE_ACCESS', '%s class ' % ' '.join(self.access))) @@ -391,14 +390,14 @@ class DvClass(object): source.append( ('FIELD', [('FIELD_ACCESS', access_str), ( 'FIELD_TYPE', '%s' % f_type), ('SPACE', ' '), ( - 'NAME_FIELD', '%s' % name, f_type, field), ('FIELD_VALUE', value), ('FIELD_END', - ';\n')])) + 'NAME_FIELD', '%s' % name, f_type, field), ('FIELD_VALUE', value), ('FIELD_END', + ';\n')])) else: source.append( ('FIELD', [('FIELD_ACCESS', access_str), ( 'FIELD_TYPE', '%s' % f_type), ('SPACE', ' '), ( - 'NAME_FIELD', '%s' % name, f_type, field), ('FIELD_END', - ';\n')])) + 'NAME_FIELD', '%s' % name, f_type, field), ('FIELD_END', + ';\n')])) for method in self.methods: if isinstance(method, DvMethod): @@ -414,7 +413,6 @@ class DvClass(object): class DvMachine(object): - def __init__(self, name): vm = auto_vm(name) if vm is None: @@ -422,7 +420,7 @@ class DvMachine(object): self.vma = analysis.Analysis(vm) self.classes = dict((dvclass.get_name(), dvclass) for dvclass in vm.get_classes()) - #util.merge_inner(self.classes) + # util.merge_inner(self.classes) def get_classes(self): return list(self.classes.keys()) diff --git a/androguard/decompiler/dad/graph.py b/androguard/decompiler/dad/graph.py index 7ec196b6..deb42207 100644 --- a/androguard/decompiler/dad/graph.py +++ b/androguard/decompiler/dad/graph.py @@ -30,7 +30,6 @@ logger = logging.getLogger('dad.graph') class Graph(object): - def __init__(self): self.entry = None self.exit = None @@ -289,8 +288,8 @@ def simplify(graph): graph.entry = suc graph.remove_node(node) elif (suc.type.is_stmt and len(graph.all_preds(suc)) == 1 and - not (suc in graph.catch_edges) and not ( - (node is suc) or (suc is graph.entry))): + not (suc in graph.catch_edges) and not ( + (node is suc) or (suc is graph.entry))): ins_to_merge = suc.get_ins() node.add_ins(ins_to_merge) for var in suc.var_to_declare: @@ -389,7 +388,6 @@ def bfs(start): class GenInvokeRetName(object): - def __init__(self): self.num = 0 self.ret = None diff --git a/androguard/decompiler/dad/instruction.py b/androguard/decompiler/dad/instruction.py index c947c93b..6971a439 100644 --- a/androguard/decompiler/dad/instruction.py +++ b/androguard/decompiler/dad/instruction.py @@ -20,7 +20,6 @@ import androguard.decompiler.dad.util as util class IRForm(object): - def __init__(self): self.var_map = {} self.type = None @@ -75,7 +74,6 @@ class IRForm(object): class Constant(IRForm): - def __init__(self, value, atype, int_value=None, descriptor=None): self.v = 'c%s' % value self.cst = value @@ -117,7 +115,6 @@ class Constant(IRForm): class BaseClass(IRForm): - def __init__(self, name, descriptor=None): self.v = 'c%s' % name self.cls = name @@ -135,7 +132,6 @@ class BaseClass(IRForm): class Variable(IRForm): - def __init__(self, value): self.v = value self.declared = False @@ -162,7 +158,6 @@ class Variable(IRForm): class Param(Variable): - def __init__(self, value, atype): super(Param, self).__init__(value) self.declared = True @@ -180,7 +175,6 @@ class Param(Variable): class ThisParam(Param): - def __init__(self, value, atype): super(ThisParam, self).__init__(value, atype) self.this = True @@ -188,7 +182,7 @@ class ThisParam(Param): def visit(self, visitor): if self.super: - return visitor.visit_super() + return visitor.visit_super() return visitor.visit_this() def __str__(self): @@ -196,7 +190,6 @@ class ThisParam(Param): class AssignExpression(IRForm): - def __init__(self, lhs, rhs): super(AssignExpression, self).__init__() if lhs: @@ -246,7 +239,6 @@ class AssignExpression(IRForm): class MoveExpression(IRForm): - def __init__(self, lhs, rhs): super(MoveExpression, self).__init__() self.lhs = lhs.v @@ -303,7 +295,6 @@ class MoveExpression(IRForm): class MoveResultExpression(MoveExpression): - def __init__(self, lhs, rhs): super(MoveResultExpression, self).__init__(lhs, rhs) @@ -323,7 +314,6 @@ class MoveResultExpression(MoveExpression): class ArrayStoreInstruction(IRForm): - def __init__(self, rhs, array, index, _type): super(ArrayStoreInstruction, self).__init__() self.rhs = rhs.v @@ -387,7 +377,6 @@ class ArrayStoreInstruction(IRForm): class StaticInstruction(IRForm): - def __init__(self, rhs, klass, ftype, name): super(StaticInstruction, self).__init__() self.rhs = rhs.v @@ -433,7 +422,6 @@ class StaticInstruction(IRForm): class InstanceInstruction(IRForm): - def __init__(self, rhs, lhs, klass, atype, name): super(InstanceInstruction, self).__init__() self.lhs = lhs.v @@ -499,7 +487,6 @@ class InstanceInstruction(IRForm): class NewInstance(IRForm): - def __init__(self, ins_type): super(NewInstance, self).__init__() self.type = ins_type @@ -521,7 +508,6 @@ class NewInstance(IRForm): class InvokeInstruction(IRForm): - def __init__(self, clsname, name, base, rtype, ptype, args, triple): super(InvokeInstruction, self).__init__() self.cls = clsname @@ -611,7 +597,6 @@ class InvokeInstruction(IRForm): class InvokeRangeInstruction(InvokeInstruction): - def __init__(self, clsname, name, rtype, ptype, args, triple): base = args.pop(0) super(InvokeRangeInstruction, self).__init__(clsname, name, base, rtype, @@ -619,14 +604,12 @@ class InvokeRangeInstruction(InvokeInstruction): class InvokeDirectInstruction(InvokeInstruction): - def __init__(self, clsname, name, base, rtype, ptype, args, triple): super(InvokeDirectInstruction, self).__init__( clsname, name, base, rtype, ptype, args, triple) class InvokeStaticInstruction(InvokeInstruction): - def __init__(self, clsname, name, base, rtype, ptype, args, triple): super(InvokeStaticInstruction, self).__init__( clsname, name, base, rtype, ptype, args, triple) @@ -640,7 +623,6 @@ class InvokeStaticInstruction(InvokeInstruction): class ReturnInstruction(IRForm): - def __init__(self, arg): super(ReturnInstruction, self).__init__() self.arg = arg @@ -686,7 +668,6 @@ class ReturnInstruction(IRForm): class NopExpression(IRForm): - def __init__(self): pass @@ -701,7 +682,6 @@ class NopExpression(IRForm): class SwitchExpression(IRForm): - def __init__(self, src, branch): super(SwitchExpression, self).__init__() self.src = src.v @@ -736,7 +716,6 @@ class SwitchExpression(IRForm): class CheckCastExpression(IRForm): - def __init__(self, arg, _type, descriptor=None): super(CheckCastExpression, self).__init__() self.arg = arg.v @@ -777,13 +756,11 @@ class CheckCastExpression(IRForm): class ArrayExpression(IRForm): - def __init__(self): super(ArrayExpression, self).__init__() class ArrayLoadExpression(ArrayExpression): - def __init__(self, arg, index, _type): super(ArrayLoadExpression, self).__init__() self.array = arg.v @@ -839,7 +816,6 @@ class ArrayLoadExpression(ArrayExpression): class ArrayLengthExpression(ArrayExpression): - def __init__(self, array): super(ArrayLengthExpression, self).__init__() self.array = array.v @@ -876,7 +852,6 @@ class ArrayLengthExpression(ArrayExpression): class NewArrayExpression(ArrayExpression): - def __init__(self, asize, atype): super(NewArrayExpression, self).__init__() self.size = asize.v @@ -914,7 +889,6 @@ class NewArrayExpression(ArrayExpression): class FilledArrayExpression(ArrayExpression): - def __init__(self, asize, atype, args): super(FilledArrayExpression, self).__init__() self.size = asize @@ -972,7 +946,6 @@ class FilledArrayExpression(ArrayExpression): class FillArrayExpression(ArrayExpression): - def __init__(self, reg, value): super(FillArrayExpression, self).__init__() self.reg = reg.v @@ -1010,7 +983,6 @@ class FillArrayExpression(ArrayExpression): class RefExpression(IRForm): - def __init__(self, ref): super(RefExpression, self).__init__() self.ref = ref.v @@ -1041,7 +1013,6 @@ class RefExpression(IRForm): class MoveExceptionExpression(RefExpression): - def __init__(self, ref, _type): super(MoveExceptionExpression, self).__init__(ref) self.type = _type @@ -1069,7 +1040,6 @@ class MoveExceptionExpression(RefExpression): class MonitorEnterExpression(RefExpression): - def __init__(self, ref): super(MonitorEnterExpression, self).__init__(ref) @@ -1078,7 +1048,6 @@ class MonitorEnterExpression(RefExpression): class MonitorExitExpression(RefExpression): - def __init__(self, ref): super(MonitorExitExpression, self).__init__(ref) @@ -1087,7 +1056,6 @@ class MonitorExitExpression(RefExpression): class ThrowExpression(RefExpression): - def __init__(self, ref): super(ThrowExpression, self).__init__(ref) @@ -1099,7 +1067,6 @@ class ThrowExpression(RefExpression): class BinaryExpression(IRForm): - def __init__(self, op, arg1, arg2, _type): super(BinaryExpression, self).__init__() self.op = op @@ -1158,7 +1125,6 @@ class BinaryExpression(IRForm): class BinaryCompExpression(BinaryExpression): - def __init__(self, op, arg1, arg2, _type): super(BinaryCompExpression, self).__init__(op, arg1, arg2, _type) @@ -1169,19 +1135,16 @@ class BinaryCompExpression(BinaryExpression): class BinaryExpression2Addr(BinaryExpression): - def __init__(self, op, dest, arg, _type): super(BinaryExpression2Addr, self).__init__(op, dest, arg, _type) class BinaryExpressionLit(BinaryExpression): - def __init__(self, op, arg1, arg2): super(BinaryExpressionLit, self).__init__(op, arg1, arg2, 'I') class UnaryExpression(IRForm): - def __init__(self, op, arg, _type): super(UnaryExpression, self).__init__() self.op = op @@ -1220,7 +1183,6 @@ class UnaryExpression(IRForm): class CastExpression(UnaryExpression): - def __init__(self, op, atype, arg): super(CastExpression, self).__init__(op, arg, atype) self.clsdesc = atype @@ -1241,11 +1203,10 @@ class CastExpression(UnaryExpression): return 'CAST_%s(%s)' % (self.op, self.var_map[self.arg]) -CONDS = {'==': '!=', '!=': '==', '<': '>=', '<=': '>', '>=': '<', '>': '<=',} +CONDS = {'==': '!=', '!=': '==', '<': '>=', '<=': '>', '>=': '<', '>': '<=', } class ConditionalExpression(IRForm): - def __init__(self, op, arg1, arg2): super(ConditionalExpression, self).__init__() self.op = op @@ -1307,7 +1268,6 @@ class ConditionalExpression(IRForm): class ConditionalZExpression(IRForm): - def __init__(self, op, arg): super(ConditionalZExpression, self).__init__() self.op = op @@ -1351,7 +1311,6 @@ class ConditionalZExpression(IRForm): class InstanceExpression(IRForm): - def __init__(self, arg, klass, ftype, name): super(InstanceExpression, self).__init__() self.arg = arg.v @@ -1396,7 +1355,6 @@ class InstanceExpression(IRForm): class StaticExpression(IRForm): - def __init__(self, cls_name, field_type, field_name): super(StaticExpression, self).__init__() self.cls = util.get_type(cls_name) diff --git a/androguard/decompiler/dad/node.py b/androguard/decompiler/dad/node.py index f43726fc..02f63db4 100644 --- a/androguard/decompiler/dad/node.py +++ b/androguard/decompiler/dad/node.py @@ -18,8 +18,9 @@ from builtins import object from future.utils import with_metaclass -class MakeProperties(type): + +class MakeProperties(type): def __init__(cls, name, bases, dct): def _wrap_set(names, name): @@ -82,7 +83,6 @@ class NodeType(with_metaclass(MakeProperties, object)): class Node(object): - def __init__(self, name): self.name = name self.num = 0 @@ -123,7 +123,6 @@ class Node(object): class Interval(object): - def __init__(self, head): self.name = 'Interval-%s' % head.name self.content = set([head]) diff --git a/androguard/decompiler/dad/opcode_ins.py b/androguard/decompiler/dad/opcode_ins.py index 6f9fa75f..69682c48 100644 --- a/androguard/decompiler/dad/opcode_ins.py +++ b/androguard/decompiler/dad/opcode_ins.py @@ -543,7 +543,7 @@ def iflez(ins, vmap): return ConditionalZExpression(Op.LEQUAL, get_variables(vmap, ins.AA)) -#TODO: check type for all aget +# TODO: check type for all aget # aget vAA, vBB, vCC ( 8b, 8b, 8b ) def aget(ins, vmap): logger.debug('AGet : %s', ins.get_output()) diff --git a/androguard/decompiler/dad/tests/dataflow_test.py b/androguard/decompiler/dad/tests/dataflow_test.py index a946c6b9..efdba1b1 100644 --- a/androguard/decompiler/dad/tests/dataflow_test.py +++ b/androguard/decompiler/dad/tests/dataflow_test.py @@ -1,6 +1,7 @@ """Tests for def_use.""" import sys + sys.path.append('.') import collections @@ -14,7 +15,6 @@ from androguard.decompiler.dad import basic_blocks class DataflowTest(unittest.TestCase): - def assertItemsEqual(self, a, b): """ This method was renamed in python3. diff --git a/androguard/decompiler/dad/tests/dominator_test.py b/androguard/decompiler/dad/tests/dominator_test.py index dc6b8f2b..12da10ea 100644 --- a/androguard/decompiler/dad/tests/dominator_test.py +++ b/androguard/decompiler/dad/tests/dominator_test.py @@ -1,6 +1,7 @@ """Tests for graph.""" import sys + sys.path.append('.') import unittest @@ -9,7 +10,6 @@ from androguard.decompiler.dad import node class DominatorTest(unittest.TestCase): - def setUp(self): self.graph = graph.Graph() diff --git a/androguard/decompiler/dad/tests/rpo_test.py b/androguard/decompiler/dad/tests/rpo_test.py index 7dd4c0b9..9a25d049 100644 --- a/androguard/decompiler/dad/tests/rpo_test.py +++ b/androguard/decompiler/dad/tests/rpo_test.py @@ -1,6 +1,7 @@ """Tests for rpo.""" import sys + sys.path.append('.') import unittest @@ -9,7 +10,6 @@ from androguard.decompiler.dad import node class NodeTest(node.Node): - def __init__(self, name): super(NodeTest, self).__init__(name) @@ -18,7 +18,6 @@ class NodeTest(node.Node): class RpoTest(unittest.TestCase): - def _getNode(self, node_map, n): ret_node = node_map.get(n) if not ret_node: @@ -67,7 +66,7 @@ class RpoTest(unittest.TestCase): } n_map = self._createGraphFrom(edges) self.graph.compute_rpo() - #self.graph.draw('_testTarjan_graph', '/tmp') + # self.graph.draw('_testTarjan_graph', '/tmp') expected_rpo = { 'r': 1, 'a': 7, @@ -111,7 +110,7 @@ class RpoTest(unittest.TestCase): } n_map = self._createGraphFrom(edges) self.graph.compute_rpo() - #self.graph.draw('_testFirst_graph', '/tmp') + # self.graph.draw('_testFirst_graph', '/tmp') expected_rpo = { 'r': 1, 'x1': 2, @@ -150,7 +149,7 @@ class RpoTest(unittest.TestCase): } n_map = self._createGraphFrom(edges) self.graph.compute_rpo() - #self.graph.draw('_testSecond_graph', '/tmp') + # self.graph.draw('_testSecond_graph', '/tmp') expected_rpo = { 'r': 1, 'x11': 3, @@ -186,7 +185,7 @@ class RpoTest(unittest.TestCase): } n_map = self._createGraphFrom(edges) self.graph.compute_rpo() - #self.graph.draw('_testFourth_graph', '/tmp') + # self.graph.draw('_testFourth_graph', '/tmp') expected_rpo = {'r': 1, 'x1': 2, 'x2': 3, 'y1': 5, 'y2': 4} self._verifyRpo(n_map, expected_rpo) @@ -205,7 +204,7 @@ class RpoTest(unittest.TestCase): } n_map = self._createGraphFrom(edges) self.graph.compute_rpo() - #self.graph.draw('_testFifth_graph', '/tmp') + # self.graph.draw('_testFifth_graph', '/tmp') expected_rpo = { 'r': 1, 'a': 2, @@ -236,7 +235,7 @@ class RpoTest(unittest.TestCase): } n_map = self._createGraphFrom(edges) self.graph.compute_rpo() - #self.graph.draw('_testLinearVit_graph', '/tmp') + # self.graph.draw('_testLinearVit_graph', '/tmp') expected_rpo = { 'r': 1, 'w': 3, @@ -264,7 +263,7 @@ class RpoTest(unittest.TestCase): } n_map = self._createGraphFrom(edges) self.graph.compute_rpo() - #self.graph.draw('_testCross_graph', '/tmp') + # self.graph.draw('_testCross_graph', '/tmp') expected_rpo = { 'r': 1, 'a': 2, @@ -295,7 +294,7 @@ class RpoTest(unittest.TestCase): } n_map = self._createGraphFrom(edges) self.graph.compute_rpo() - #self.graph.draw('_testTVerify_graph', '/tmp') + # self.graph.draw('_testTVerify_graph', '/tmp') expected_rpo = { 'n1': 1, 'n2': 2, diff --git a/androguard/decompiler/dad/util.py b/androguard/decompiler/dad/util.py index 56361f0e..b26719db 100644 --- a/androguard/decompiler/dad/util.py +++ b/androguard/decompiler/dad/util.py @@ -76,7 +76,7 @@ ACCESS_FLAGS_METHODS = { ACCESS_ORDER = [0x1, 0x4, 0x2, 0x400, 0x8, 0x10, 0x80, 0x40, 0x20, 0x100, 0x800, 0x200, 0x1000, 0x2000, 0x4000, 0x10000, 0x20000] -TYPE_LEN = {'J': 2, 'D': 2,} +TYPE_LEN = {'J': 2, 'D': 2, } def get_access_class(access): diff --git a/androguard/decompiler/dad/writer.py b/androguard/decompiler/dad/writer.py index 8121979b..4267ee25 100644 --- a/androguard/decompiler/dad/writer.py +++ b/androguard/decompiler/dad/writer.py @@ -32,7 +32,6 @@ logger = logging.getLogger('dad.writer') class Writer(object): - def __init__(self, graph, method): self.graph = graph self.method = method @@ -104,7 +103,7 @@ class Writer(object): rhs.visit(self) self.end_ins() - #TODO: prefer this class as write_ind_visit_end that should be deprecated + # TODO: prefer this class as write_ind_visit_end that should be deprecated # at the end def write_ind_visit_end_ext(self, lhs, @@ -127,8 +126,8 @@ class Writer(object): def write_inplace_if_possible(self, lhs, rhs): if isinstance(rhs, BinaryExpression) and lhs == rhs.var_map[rhs.arg1]: exp_rhs = rhs.var_map[rhs.arg2] - if rhs.op in '+-' and isinstance(exp_rhs, Constant) and\ - exp_rhs.get_int_value() == 1: + if rhs.op in '+-' and isinstance(exp_rhs, Constant) and \ + exp_rhs.get_int_value() == 1: return self.write_ind_visit_end(lhs, rhs.op * 2, data=rhs) return self.write_ind_visit_end( lhs, @@ -172,7 +171,7 @@ class Writer(object): self.write_ext(('PARENTHESIS_START', '(')) if self.method.params_type: proto = ', '.join(['%s p%s' % (get_type(p_type), param) for p_type, - param in zip(self.method.params_type, params)]) + param in zip(self.method.params_type, params)]) first = True for p_type, param in zip(self.method.params_type, params): if not first: @@ -288,8 +287,8 @@ class Writer(object): self.write('%s}\n' % self.space(), data="IF_END_2") self.visit_node(cond.false) elif follow is not None: - if cond.true in (follow, self.next_case) or\ - cond.num > cond.true.num: + if cond.true in (follow, self.next_case) or \ + cond.num > cond.true.num: # or cond.true.num > cond.false.num: cond.neg() cond.true, cond.false = cond.false, cond.true @@ -525,7 +524,7 @@ class Writer(object): call_name = "%s -> %s" % (base2base.type, name) break elif (hasattr(base2base, "base") and - hasattr(base2base, "var_map")): + hasattr(base2base, "var_map")): continue else: call_name = "UNKNOWN_TODO" diff --git a/androguard/decompiler/decompiler.py b/androguard/decompiler/decompiler.py index 9c3d27b0..492d6ed5 100644 --- a/androguard/decompiler/decompiler.py +++ b/androguard/decompiler/decompiler.py @@ -37,12 +37,12 @@ try: except ImportError: PYGMENTS = False + class Filter(object): pass class Dex2Jar(object): - def __init__(self, vm, path_dex2jar="./decompiler/dex2jar/", @@ -70,7 +70,6 @@ class Dex2Jar(object): class DecompilerDex2Jad(object): - def __init__(self, vm, path_dex2jar="./decompiler/dex2jar/", @@ -164,7 +163,6 @@ class DecompilerDex2Jad(object): class DecompilerDex2WineJad(object): - def __init__(self, vm, path_dex2jar="./decompiler/dex2jar/", @@ -258,7 +256,6 @@ class DecompilerDex2WineJad(object): class DecompilerDed(object): - def __init__(self, vm, path="./decompiler/ded/", @@ -298,7 +295,7 @@ class DecompilerDed(object): for i in vm.get_classes(): fname = findsrc + "/" + i.get_name()[1:-1] + ".java" - #print fname + # print fname if os.path.isfile(fname) == True: self.classes[i.get_name()] = read(fname, binary=False) else: @@ -339,7 +336,6 @@ class DecompilerDed(object): class DecompilerDex2Fernflower(object): - def __init__(self, vm, path_dex2jar="./decompiler/dex2jar/", @@ -440,15 +436,14 @@ class DecompilerDex2Fernflower(object): class MethodFilter(Filter): - def __init__(self, **options): Filter.__init__(self, **options) self.method_name = options["method_name"] - #self.descriptor = options["descriptor"] + # self.descriptor = options["descriptor"] self.present = False - self.get_desc = True #False + self.get_desc = True # False def filter(self, lexer, stream): a = [] @@ -457,8 +452,8 @@ class MethodFilter(Filter): for ttype, value in stream: if self.method_name == value and (ttype is Token.Name.Function or - ttype is Token.Name): - #print ttype, value + ttype is Token.Name): + # print ttype, value item_decl = -1 for i in range(len(a) - 1, 0, -1): @@ -504,7 +499,6 @@ class MethodFilter(Filter): class DecompilerDAD(object): - def __init__(self, vm, vmx): self.vm = vm self.vmx = vmx diff --git a/androguard/gui/Banners.py b/androguard/gui/Banners.py index d02344f7..1e8c40b8 100644 --- a/androguard/gui/Banners.py +++ b/androguard/gui/Banners.py @@ -9,6 +9,7 @@ import os, sys, inspect from .TextDecorators import * + class Banner(object): def getOrientation(self): NotImplementedError('method not implemented.') @@ -32,11 +33,11 @@ class Banner(object): Orientation = enum(Left=0, Bottom=1, Top=2) - class Observer(object): def changeViewMode(self, viewMode): self.setViewMode(viewMode) + class Banners(Observer): BOTTOM_SEPARATOR = 5 @@ -51,7 +52,7 @@ class Banners(Observer): def banners(self): return self._Banners - + def getLeftOffset(self): offset = 0 for banner in self._Banners: @@ -84,7 +85,7 @@ class Banners(Observer): for banner in self._Banners: # banners are not resizeable actually if banner.getOrientation() == Orientation.Left: - banner.resize(banner.getDesiredGeometry(), height - limit + 4) # +4 , make to look nice + banner.resize(banner.getDesiredGeometry(), height - limit + 4) # +4 , make to look nice if banner.getOrientation() == Orientation.Bottom: banner.resize(width, banner.getDesiredGeometry()) @@ -101,7 +102,7 @@ class Banners(Observer): for banner in self._Banners: if banner.getOrientation() == Orientation.Top: banner.draw() - qp.drawPixmap(offsetLeft-4, offsetBottom, banner.getPixmap()) + qp.drawPixmap(offsetLeft - 4, offsetBottom, banner.getPixmap()) offsetBottom += banner.getDesiredGeometry() + self.separatorLeft for banner in self._Banners: @@ -120,7 +121,6 @@ class Banners(Observer): offsetBottom += banner.getDesiredGeometry() + self.separatorBottom - class FileAddrBanner(Banner): def __init__(self, themes, dataModel, viewMode): self.width = 0 @@ -137,7 +137,7 @@ class FileAddrBanner(Banner): self.font.setKerning(False) self.font.setFixedPitch(True) fm = QtGui.QFontMetrics(self.font) - self.fontWidth = fm.width('a') + self.fontWidth = fm.width('a') self.fontHeight = fm.height() self.textPen = QtGui.QPen(QtGui.QColor(192, 192, 192), 0, QtCore.Qt.SolidLine) @@ -164,16 +164,15 @@ class FileAddrBanner(Banner): columns, rows = self.viewMode.getGeometry() qp.begin(self.qpix) - qp.fillRect(0, 0, self.width, self.height, self.backgroundBrush) + qp.fillRect(0, 0, self.width, self.height, self.backgroundBrush) qp.setPen(self.textPen) qp.setFont(self.font) - + for i in range(rows): s = '{0:08x}'.format(offset) - qp.drawText(0+5, (i+1) * self.fontHeight, s) + qp.drawText(0 + 5, (i + 1) * self.fontHeight, s) columns = self.viewMode.getColumnsbyRow(i) offset += columns - qp.end() @@ -182,7 +181,6 @@ class FileAddrBanner(Banner): self.height = height self.qpix = self._getNewPixmap(self.width, self.height) - class BottomBanner(Banner): @@ -194,16 +192,15 @@ class BottomBanner(Banner): self.backgroundBrush = QtGui.QBrush(themes['background']) self.qpix = self._getNewPixmap(self.width, self.height) - # text font self.font = themes['font'] - + # font metrics. assume font is monospaced self.font.setKerning(False) self.font.setFixedPitch(True) fm = QtGui.QFontMetrics(self.font) - self.fontWidth = fm.width('a') + self.fontWidth = fm.width('a') self.fontHeight = fm.height() self.textPen = QtGui.QPen(themes['pen'], 0, QtCore.Qt.SolidLine) @@ -221,7 +218,7 @@ class BottomBanner(Banner): qp = QtGui.QPainter() qp.begin(self.qpix) - qp.fillRect(0, 0, self.width, self.height, self.backgroundBrush) + qp.fillRect(0, 0, self.width, self.height, self.backgroundBrush) qp.setPen(self.textPen) qp.setFont(self.font) @@ -235,8 +232,6 @@ class BottomBanner(Banner): pos = 'POS: {0:08x}'.format(self.viewMode.getCursorAbsolutePosition()) - - qword = self.dataModel.getQWORD(self.viewMode.getCursorAbsolutePosition(), asString=True) if qword is None: qword = '----' @@ -248,7 +243,7 @@ class BottomBanner(Banner): sb = 'BYTE: {0}'.format(byte) - cemu.writeAt(1, 0, pos) + cemu.writeAt(1, 0, pos) cemu.writeAt(17, 0, sd) cemu.writeAt(35, 0, sq) cemu.writeAt(62, 0, sb) @@ -265,7 +260,7 @@ class BottomBanner(Banner): qp.setPen(pen) cemu.writeAt(73, 0, 'Selection: ') - cemu.write('{0:x}:{1}'.format(u, v-u)) + cemu.write('{0:x}:{1}'.format(u, v - u)) else: pen = QtGui.QPen(QtGui.QColor(128, 128, 128), 0, QtCore.Qt.SolidLine) qp.setPen(pen) @@ -278,9 +273,9 @@ class BottomBanner(Banner): qp.drawLine(self.fontWidth*(len(pos + sd + sq) + 1) + 5*15, 0, self.fontWidth*(len(pos + sd + sq) + 1) + 5*15, 50) qp.drawLine(self.fontWidth*(len(pos + sd + sq + sb) + 1) + 8*15, 0, self.fontWidth*(len(pos + sd + sq + sb) + 1) + 8*15, 50) """ - #qp.drawLine(270, 0, 270, 50) - #qp.drawLine(480, 0, 480, 50) - #qp.drawLine(570, 0, 570, 50) + # qp.drawLine(270, 0, 270, 50) + # qp.drawLine(480, 0, 480, 50) + # qp.drawLine(570, 0, 570, 50) """ # position qp.drawText(0 + 5, self.fontHeight, pos) @@ -302,10 +297,11 @@ class BottomBanner(Banner): # separator qp.drawLine(570, 0, 570, 50) """ - + qp.end() pass + def getPixmap(self): return self.qpix @@ -328,7 +324,6 @@ class TopBanner(Banner): self.qpix = self._getNewPixmap(self.width, self.height) self.backgroundBrush = QtGui.QBrush(themes['background']) - # text font self.font = themes['font'] @@ -336,7 +331,7 @@ class TopBanner(Banner): self.font.setKerning(False) self.font.setFixedPitch(True) fm = QtGui.QFontMetrics(self.font) - self.fontWidth = fm.width('a') + self.fontWidth = fm.width('a') self.fontHeight = fm.height() self.textPen = QtGui.QPen(themes['pen'], 0, QtCore.Qt.SolidLine) @@ -345,7 +340,7 @@ class TopBanner(Banner): return Orientation.Top def getDesiredGeometry(self): - return 26#22 + return 26 # 22 def setViewMode(self, viewMode): self.viewMode = viewMode @@ -358,7 +353,7 @@ class TopBanner(Banner): qp = QtGui.QPainter() qp.begin(self.qpix) - qp.fillRect(0, 0, self.width, self.height, self.backgroundBrush) + qp.fillRect(0, 0, self.width, self.height, self.backgroundBrush) qp.setPen(self.textPen) qp.setFont(self.font) @@ -371,7 +366,7 @@ class TopBanner(Banner): text = self.viewMode.getHeaderInfo() cemu.writeAt(offset, 0, text) - + qp.end() def getPixmap(self): @@ -384,4 +379,3 @@ class TopBanner(Banner): self.width = width self.height = height self.qpix = self._getNewPixmap(self.width, self.height) - diff --git a/androguard/gui/BinViewMode.py b/androguard/gui/BinViewMode.py index bd733385..144c5cd9 100644 --- a/androguard/gui/BinViewMode.py +++ b/androguard/gui/BinViewMode.py @@ -5,15 +5,16 @@ from builtins import range from .ViewMode import * from .cemu import * from . import TextSelection -from .TextDecorators import * +from .TextDecorators import * from PyQt5 import QtGui, QtCore import PyQt5 -from time import time +from time import time import sys import threading import string + class BinViewMode(ViewMode): def __init__(self, themes, width, height, data, cursor, widget=None): super(BinViewMode, self).__init__() @@ -41,11 +42,9 @@ class BinViewMode(ViewMode): self.font.setKerning(False) self.font.setFixedPitch(True) fm = QtGui.QFontMetrics(self.font) - self._fontWidth = fm.width('a') + self._fontWidth = fm.width('a') self._fontHeight = fm.height() - - self.textPen = QtGui.QPen(self.themes['pen'], 0, QtCore.Qt.SolidLine) self.resize(width, height) @@ -64,8 +63,8 @@ class BinViewMode(ViewMode): def startCaching(self): # cache self.cache() - #t = threading.Thread(target=self.cache) - #t.start() + # t = threading.Thread(target=self.cache) + # t.start() def isInCache(self, page): if page in self.Paints: @@ -73,13 +72,13 @@ class BinViewMode(ViewMode): def cache(self): - for i in [1,2]: - #pix = self._getNewPixmap(self.width, self.height) + for i in [1, 2]: + # pix = self._getNewPixmap(self.width, self.height) if not self.isInCache(self.dataModel.getPageOffset(i)): pix = QtGui.QImage(self.width, self.height, QtGui.QImage.Format_ARGB32) self.scrollPages(1, cachePix=pix, pageOffset=i) self.Paints[self.dataModel.getPageOffset(i)] = pix - #print 'cache' + # print 'cache' def _getNewPixmap(self, width, height): return QtGui.QPixmap(width, height) @@ -90,7 +89,7 @@ class BinViewMode(ViewMode): def computeTextArea(self): self.COLUMNS = self.width // self.fontWidth - self.ROWS = self.height // self.fontHeight + self.ROWS = self.height // self.fontHeight self.notify(self.ROWS, self.COLUMNS) def drawAdditionals(self): @@ -99,7 +98,7 @@ class BinViewMode(ViewMode): qp.begin(self.newPix) qp.drawPixmap(0, 0, self.qpix) - #self.transformationEngine.decorateText() + # self.transformationEngine.decorateText() # highlight selected text self.selector.highlightText() @@ -133,33 +132,32 @@ class BinViewMode(ViewMode): if self.dataModel.getOffset() in self.Paints: self.refresh = False self.qpix = QtGui.QPixmap(self.Paints[self.dataModel.getOffset()]) - #print 'hit' + # print 'hit' self.drawAdditionals() return if self.refresh or refresh: qp = QtGui.QPainter() qp.begin(self.qpix) - #start = time() + # start = time() if not howMany: howMany = self.ROWS self.drawTextMode(qp, row=row, howMany=howMany) - #end = time() - start - #print 'Time ' + str(end) + # end = time() - start + # print 'Time ' + str(end) self.refresh = False qp.end() -# self.Paints[self.dataModel.getOffset()] = QtGui.QPixmap(self.qpix) + # self.Paints[self.dataModel.getOffset()] = QtGui.QPixmap(self.qpix) self.drawAdditionals() - def draw2(self, qp, refresh=False): if self.refresh or refresh: start = time() self.drawTextMode(qp, howMany=self.ROWS) end = time() - start - #print 'Time ' + str(end) + # print 'Time ' + str(end) qp = QtGui.QPainter() qp.begin(self.qpix) @@ -173,24 +171,24 @@ class BinViewMode(ViewMode): qp.setBrush(QtGui.QColor(255, 102, 179)) qp.setOpacity(0.8) - qp.drawRect(cursorX*self.fontWidth, cursorY*self.fontHeight, self.fontWidth, self.fontHeight + 2) - qp.setOpacity(1) - + qp.drawRect(cursorX * self.fontWidth, cursorY * self.fontHeight, self.fontWidth, self.fontHeight + 2) + qp.setOpacity(1) def scroll_h(self, dx): - self.qpix.scroll(dx*self.fontWidth, 0, self.qpix.rect()) + self.qpix.scroll(dx * self.fontWidth, 0, self.qpix.rect()) qp = QtGui.QPainter() - + qp.begin(self.qpix) qp.setFont(self.font) qp.setPen(self.textPen) factor = abs(dx) if dx < 0: - qp.fillRect((self.COLUMNS - 1*factor)*self.fontWidth, 0, factor * self.fontWidth, self.ROWS*self.fontHeight + self.SPACER, self.backgroundBrush) + qp.fillRect((self.COLUMNS - 1 * factor) * self.fontWidth, 0, factor * self.fontWidth, + self.ROWS * self.fontHeight + self.SPACER, self.backgroundBrush) if dx > 0: - qp.fillRect(0, 0, factor * self.fontWidth, self.ROWS*self.fontHeight + self.SPACER, self.backgroundBrush) + qp.fillRect(0, 0, factor * self.fontWidth, self.ROWS * self.fontHeight + self.SPACER, self.backgroundBrush) cemu = ConsoleEmulator(qp, self.ROWS, self.COLUMNS) @@ -202,11 +200,11 @@ class BinViewMode(ViewMode): if dx < 0: # cu (column) selectam coloana - idx = (i+1)*(self.COLUMNS) - (column + 1) + idx = (i + 1) * (self.COLUMNS) - (column + 1) if dx > 0: - idx = (i)*(self.COLUMNS) + (column) + idx = (i) * (self.COLUMNS) + (column) - #c = self.dataModel.getDisplayablePage()[idx] + # c = self.dataModel.getDisplayablePage()[idx] c = self.transformationEngine.getChar(idx) qp.setPen(self.transformationEngine.choosePen(idx)) @@ -215,7 +213,7 @@ class BinViewMode(ViewMode): qp.setBackground(self.transformationEngine.chooseBrush(idx)) -# self.decorate(qp, (idx, c), self.dataModel.getDisplayablePage()) + # self.decorate(qp, (idx, c), self.dataModel.getDisplayablePage()) if dx < 0: cemu.writeAt(self.COLUMNS - (column + 1), i, self.cp437(c)) @@ -225,15 +223,14 @@ class BinViewMode(ViewMode): qp.setBackgroundMode(0) qp.end() - def scroll_v(self, dy, cachePix=None, pageOffset=None): - start = time() + start = time() -# if cachePix: - # print 'da' + # if cachePix: + # print 'da' if not cachePix: - self.qpix.scroll(0, dy*self.fontHeight, self.qpix.rect()) + self.qpix.scroll(0, dy * self.fontHeight, self.qpix.rect()) qp = QtGui.QPainter() @@ -242,7 +239,7 @@ class BinViewMode(ViewMode): else: qp.begin(self.qpix) - #self.font.setStyleHint(QtGui.QFont.AnyStyle, QtGui.QFont.PreferAntialias) + # self.font.setStyleHint(QtGui.QFont.AnyStyle, QtGui.QFont.PreferAntialias) qp.setFont(self.font) qp.setPen(self.textPen) @@ -250,17 +247,17 @@ class BinViewMode(ViewMode): # same problem when scrolling up. factor = abs(dy) if dy < 0: - qp.fillRect(0, (self.ROWS-factor)*self.fontHeight, self.fontWidth*self.COLUMNS, factor * self.fontHeight + self.SPACER, self.backgroundBrush) + qp.fillRect(0, (self.ROWS - factor) * self.fontHeight, self.fontWidth * self.COLUMNS, + factor * self.fontHeight + self.SPACER, self.backgroundBrush) if dy > 0: - qp.fillRect(0, 0, self.fontWidth*self.COLUMNS, factor * self.fontHeight, self.backgroundBrush) + qp.fillRect(0, 0, self.fontWidth * self.COLUMNS, factor * self.fontHeight, self.backgroundBrush) cemu = ConsoleEmulator(qp, self.ROWS, self.COLUMNS) - #page = self.dataModel.getDisplayablePage() + # page = self.dataModel.getDisplayablePage() page = self.transformationEngine.decorate(pageOffset=pageOffset) - lastPen = None lastBrush = None @@ -268,25 +265,23 @@ class BinViewMode(ViewMode): k = time() for row in range(factor): # desenam caracterele - #cemu.writeAt(0, row, str(page[row*self.COLUMNS:row*self.COLUMNS+self.COLUMNS])) - + # cemu.writeAt(0, row, str(page[row*self.COLUMNS:row*self.COLUMNS+self.COLUMNS])) + for i in range(self.COLUMNS): if dy < 0: - idx = (self.ROWS - (row + 1))*self.COLUMNS + i + idx = (self.ROWS - (row + 1)) * self.COLUMNS + i if dy > 0: - idx = i + (self.COLUMNS*row) + idx = i + (self.COLUMNS * row) c = self.transformationEngine.getChar(idx) - nextPen = self.transformationEngine.choosePen(idx) if nextPen != lastPen: qp.setPen(nextPen) lastPen = nextPen - qp.setBackgroundMode(0) nextBrush = self.transformationEngine.chooseBrush(idx) if nextBrush != None: @@ -296,20 +291,19 @@ class BinViewMode(ViewMode): qp.setBackground(nextBrush) lastBrush = nextBrush - if dy < 0: cemu.writeAt_c(i, self.ROWS - 1 - row, self.cp437(c)) if dy > 0: cemu.writeAt_c(i, row, self.cp437(c)) - - + # TODO: text decorator is taking too much! print time() - k qp.end() end = time() - start -# print end -# sys.exit() + + # print end + # sys.exit() def scroll(self, dx, dy, cachePix=None, pageOffset=None): @@ -324,16 +318,16 @@ class BinViewMode(ViewMode): self.scroll_h(dx) if dy != 0: - if self.dataModel.inLimits((self.dataModel.getOffset() - dy*self.COLUMNS)): - self.dataModel.slide(-dy*self.COLUMNS) - #import time - #k = time.time() + if self.dataModel.inLimits((self.dataModel.getOffset() - dy * self.COLUMNS)): + self.dataModel.slide(-dy * self.COLUMNS) + # import time + # k = time.time() self.scroll_v(dy, cachePix, pageOffset) - #print time.time() - k + # print time.time() - k else: if dy <= 0: pass - #self.dataModel.slideToLastPage() + # self.dataModel.slideToLastPage() else: self.dataModel.slideToFirstPage() @@ -343,9 +337,8 @@ class BinViewMode(ViewMode): if not cachePix: self.draw() - def scrollPages(self, number, cachePix=None, pageOffset=None): - self.scroll(0, -number*self.ROWS, cachePix=cachePix, pageOffset=pageOffset) + self.scroll(0, -number * self.ROWS, cachePix=cachePix, pageOffset=pageOffset) def getPixmap(self): for t in self.Ops: @@ -356,38 +349,39 @@ class BinViewMode(ViewMode): t[0](*t[1:]) self.Ops = [] - + if not self.newPix: self.draw() return self.newPix def resize(self, width, height): - self.width = width - width%self.fontWidth - self.height = height - height%self.fontHeight + self.width = width - width % self.fontWidth + self.height = height - height % self.fontHeight self.computeTextArea() self.qpix = self._getNewPixmap(self.width, self.height + self.SPACER) self.refresh = True def drawTextMode(self, qp, row=0, howMany=1): # draw background - qp.fillRect(0, row * self.fontHeight, self.COLUMNS * self.fontWidth, howMany * self.fontHeight + self.SPACER, self.backgroundBrush) + qp.fillRect(0, row * self.fontHeight, self.COLUMNS * self.fontWidth, howMany * self.fontHeight + self.SPACER, + self.backgroundBrush) # set text pen&font qp.setFont(self.font) qp.setPen(self.textPen) - + cemu = ConsoleEmulator(qp, self.ROWS, self.COLUMNS) self.page = self.transformationEngine.decorate() cemu.gotoXY(0, row) - for i, c in enumerate(self.getDisplayablePage()[row*self.COLUMNS:(row + howMany)*self.COLUMNS]): - x = i + row*self.COLUMNS + for i, c in enumerate(self.getDisplayablePage()[row * self.COLUMNS:(row + howMany) * self.COLUMNS]): + x = i + row * self.COLUMNS c = self.transformationEngine.getChar(x) - + qp.setPen(self.transformationEngine.choosePen(x)) if self.transformationEngine.chooseBrush(x) != None: @@ -395,12 +389,11 @@ class BinViewMode(ViewMode): qp.setBackground(self.transformationEngine.chooseBrush(x)) cemu.write(self.cp437(c)) - qp.setBackgroundMode(0) + qp.setBackgroundMode(0) - def getCursorAbsolutePosition(self): x, y = self.cursor.getPosition() - return self.dataModel.getOffset() + y*self.COLUMNS + x + return self.dataModel.getOffset() + y * self.COLUMNS + x def moveCursor(self, direction): cursorX, cursorY = self.cursor.getPosition() @@ -410,31 +403,29 @@ class BinViewMode(ViewMode): if cursorY == 0: self.scroll(1, 0) else: - self.cursor.moveAbsolute(self.COLUMNS-1, cursorY - 1) + self.cursor.moveAbsolute(self.COLUMNS - 1, cursorY - 1) else: self.cursor.move(-1, 0) - if direction == Directions.Right: if self.getCursorAbsolutePosition() + 1 >= self.dataModel.getDataSize(): return - if cursorX == self.COLUMNS-1: - if cursorY == self.ROWS-1: + if cursorX == self.COLUMNS - 1: + if cursorY == self.ROWS - 1: self.scroll(-1, 0) else: self.cursor.moveAbsolute(0, cursorY + 1) else: self.cursor.move(1, 0) - if direction == Directions.Down: if self.getCursorAbsolutePosition() + self.COLUMNS >= self.dataModel.getDataSize(): - y, x = self.dataModel.getXYInPage(self.dataModel.getDataSize()-1) + y, x = self.dataModel.getXYInPage(self.dataModel.getDataSize() - 1) self.cursor.moveAbsolute(x, y) return - if cursorY == self.ROWS-1: + if cursorY == self.ROWS - 1: self.scroll(0, -1) else: self.cursor.move(0, 1) @@ -447,11 +438,11 @@ class BinViewMode(ViewMode): if direction == Directions.End: if self.dataModel.getDataSize() < self.getCursorAbsolutePosition() + self.ROWS * self.COLUMNS: - y, x = self.dataModel.getXYInPage(self.dataModel.getDataSize()-1) + y, x = self.dataModel.getXYInPage(self.dataModel.getDataSize() - 1) self.cursor.moveAbsolute(x, y) else: - self.cursor.moveAbsolute(self.COLUMNS-1, self.ROWS-1) + self.cursor.moveAbsolute(self.COLUMNS - 1, self.ROWS - 1) if direction == Directions.Home: self.cursor.moveAbsolute(0, 0) @@ -468,25 +459,23 @@ class BinViewMode(ViewMode): def keyFilter(self): return [ - (QtCore.Qt.ControlModifier, QtCore.Qt.Key_Right), - (QtCore.Qt.ControlModifier, QtCore.Qt.Key_Left), - (QtCore.Qt.ControlModifier, QtCore.Qt.Key_Up), - (QtCore.Qt.ControlModifier, QtCore.Qt.Key_Down), - (QtCore.Qt.ControlModifier, QtCore.Qt.Key_End), - (QtCore.Qt.ControlModifier, QtCore.Qt.Key_Home), + (QtCore.Qt.ControlModifier, QtCore.Qt.Key_Right), + (QtCore.Qt.ControlModifier, QtCore.Qt.Key_Left), + (QtCore.Qt.ControlModifier, QtCore.Qt.Key_Up), + (QtCore.Qt.ControlModifier, QtCore.Qt.Key_Down), + (QtCore.Qt.ControlModifier, QtCore.Qt.Key_End), + (QtCore.Qt.ControlModifier, QtCore.Qt.Key_Home), + (QtCore.Qt.NoModifier, QtCore.Qt.Key_Right), + (QtCore.Qt.NoModifier, QtCore.Qt.Key_Left), + (QtCore.Qt.NoModifier, QtCore.Qt.Key_Up), + (QtCore.Qt.NoModifier, QtCore.Qt.Key_Down), + (QtCore.Qt.NoModifier, QtCore.Qt.Key_End), + (QtCore.Qt.NoModifier, QtCore.Qt.Key_Home), + (QtCore.Qt.NoModifier, QtCore.Qt.Key_PageDown), + (QtCore.Qt.NoModifier, QtCore.Qt.Key_PageUp) - (QtCore.Qt.NoModifier, QtCore.Qt.Key_Right), - (QtCore.Qt.NoModifier, QtCore.Qt.Key_Left), - (QtCore.Qt.NoModifier, QtCore.Qt.Key_Up), - (QtCore.Qt.NoModifier, QtCore.Qt.Key_Down), - (QtCore.Qt.NoModifier, QtCore.Qt.Key_End), - (QtCore.Qt.NoModifier, QtCore.Qt.Key_Home), - (QtCore.Qt.NoModifier, QtCore.Qt.Key_PageDown), - (QtCore.Qt.NoModifier, QtCore.Qt.Key_PageUp) - - - ] + ] def anon(self, dx, dy): self.scroll(dx, dy) @@ -510,17 +499,18 @@ class BinViewMode(ViewMode): self.dataModel.setData_b(self.dataModel.getOffset() + offs, str(event.text())) - z = self.dataModel.getOffset() + offs - #TODO: sa nu se repete, tre original_transformengine - self.transformationEngine = RangePen(self.original_textdecorator, z, z + 0, QtGui.QPen(QtGui.QColor(218, 94, 242), 0, QtCore.Qt.SolidLine), ignoreHighlights=True) + z = self.dataModel.getOffset() + offs + # TODO: sa nu se repete, tre original_transformengine + self.transformationEngine = RangePen(self.original_textdecorator, z, z + 0, + QtGui.QPen(QtGui.QColor(218, 94, 242), 0, QtCore.Qt.SolidLine), + ignoreHighlights=True) self.moveCursor(Directions.Right) - + x, y = self.cursor.getPosition() self.draw(refresh=True, row=y, howMany=1) - def handleKeyEvent(self, modifiers, key, event=None): if event.type() == QtCore.QEvent.KeyRelease: if key == QtCore.Qt.Key_Shift: @@ -529,11 +519,11 @@ class BinViewMode(ViewMode): if event.type() == QtCore.QEvent.KeyPress: if modifiers & QtCore.Qt.ShiftModifier: - keys = [QtCore.Qt.Key_Right, QtCore.Qt.Key_Left, QtCore.Qt.Key_Down, QtCore.Qt.Key_Up, QtCore.Qt.Key_End, QtCore.Qt.Key_Home] + keys = [QtCore.Qt.Key_Right, QtCore.Qt.Key_Left, QtCore.Qt.Key_Down, QtCore.Qt.Key_Up, + QtCore.Qt.Key_End, QtCore.Qt.Key_Home] if key in keys: self.startSelection() - if modifiers & QtCore.Qt.ControlModifier: if key == QtCore.Qt.Key_Right: self.addop((self.anon, -1, 0)) @@ -555,10 +545,9 @@ class BinViewMode(ViewMode): self.moveCursor(Directions.CtrlHome) self.addop((self.draw,)) - return True - else:#elif modifiers == QtCore.Qt.NoModifier or modifiers == QtCore.Qt.ShiftModifier:: + else: # elif modifiers == QtCore.Qt.NoModifier or modifiers == QtCore.Qt.ShiftModifier:: if key == QtCore.Qt.Key_Escape: self.selector.resetSelections() @@ -571,15 +560,15 @@ class BinViewMode(ViewMode): if key == QtCore.Qt.Key_Right: self.moveCursor(Directions.Right) self.addop((self.draw,)) - + if key == QtCore.Qt.Key_Down: self.moveCursor(Directions.Down) self.addop((self.draw,)) - + if key == QtCore.Qt.Key_End: self.moveCursor(Directions.End) self.addop((self.draw,)) - + if key == QtCore.Qt.Key_Home: self.moveCursor(Directions.Home) self.addop((self.draw,)) @@ -587,10 +576,10 @@ class BinViewMode(ViewMode): if key == QtCore.Qt.Key_Up: self.moveCursor(Directions.Up) self.addop((self.draw,)) - + if key == QtCore.Qt.Key_PageDown: self.addop((self.scrollPages, 1)) - + if key == QtCore.Qt.Key_PageUp: self.addop((self.scrollPages, -1)) @@ -615,7 +604,6 @@ class BinViewMode(ViewMode): self.transformationEngine.reset() self.draw(refresh=True) - """ def handleKeyPressEvent(self, modifier, key): if modifier == QtCore.Qt.ShiftModifier: @@ -627,6 +615,7 @@ class BinViewMode(ViewMode): self.stopSelection() return True """ + def addop(self, t): self.Ops.append(t) diff --git a/androguard/gui/DataModel.py b/androguard/gui/DataModel.py index eabb301f..766a5443 100644 --- a/androguard/gui/DataModel.py +++ b/androguard/gui/DataModel.py @@ -2,6 +2,7 @@ from __future__ import division from __future__ import print_function from __future__ import absolute_import from future import standard_library + standard_library.install_aliases() from builtins import str from builtins import object @@ -13,10 +14,12 @@ from .HexViewMode import * from .DisasmViewMode import * from .SourceViewMode import * + class Observer(object): def update_geometry(self): NotImplementedError('method not implemented.') + class DataModel(Observer): def __init__(self, data): self._dataOffset = 0 @@ -28,7 +31,7 @@ class DataModel(Observer): @property def dataOffset(self): return self._dataOffset - + @dataOffset.setter def dataOffset(self, value): print("DATA OFFSET", value) @@ -53,7 +56,7 @@ class DataModel(Observer): self.dataOffset = off def offsetInPage(self, off): - if off >= self.dataOffset and off <= self.dataOffset + self.rows*self.cols: + if off >= self.dataOffset and off <= self.dataOffset + self.rows * self.cols: return True return False @@ -63,87 +66,87 @@ class DataModel(Observer): self.cols = cols def slideLine(self, factor): - self.slide(factor*self.cols) + self.slide(factor * self.cols) def slidePage(self, factor): - self.slide(factor*self.cols*self.rows) + self.slide(factor * self.cols * self.rows) def slideToLastPage(self): - if self.rows*self.cols > len(self.data): + if self.rows * self.cols > len(self.data): return - self.dataOffset = len(self.data) - self.cols*self.rows + self.dataOffset = len(self.data) - self.cols * self.rows def slideToFirstPage(self): self.dataOffset = 0 def getXYInPage(self, off): off -= self.dataOffset - x, y = off // self.cols, off%self.cols + x, y = off // self.cols, off % self.cols return x, y def getPageOffset(self, page): - return self.getOffset() + (page)*self.rows*self.cols - + return self.getOffset() + (page) * self.rows * self.cols def getQWORD(self, offset, asString=False): if offset + 8 > len(self.data): return None - b = bytearray(self.data[offset:offset+8]) + b = bytearray(self.data[offset:offset + 8]) - d = ((b[7] << 56) | (b[6] << 48) | (b[5] << 40) | (b[4] << 32) | (b[3] << 24) | (b[2] << 16) | (b[1] << 8) | (b[0])) & 0xFFFFFFFFFFFFFFFF + d = ((b[7] << 56) | (b[6] << 48) | (b[5] << 40) | (b[4] << 32) | (b[3] << 24) | (b[2] << 16) | (b[1] << 8) | ( + b[0])) & 0xFFFFFFFFFFFFFFFF - if not asString: + if not asString: return d s = '{0:016X}'.format(d) - + return s def getDWORD(self, offset, asString=False): if offset + 4 >= len(self.data): return None - b = bytearray(self.data[offset:offset+4]) + b = bytearray(self.data[offset:offset + 4]) d = ((b[3] << 24) | (b[2] << 16) | (b[1] << 8) | (b[0])) & 0xFFFFFFFF - if not asString: + if not asString: return d s = '{0:08X}'.format(d) - + return s def getWORD(self, offset, asString=False): if offset + 2 > len(self.data): return None - b = bytearray(self.data[offset:offset+2]) + b = bytearray(self.data[offset:offset + 2]) d = ((b[1] << 8) | (b[0])) & 0xFFFF - if not asString: + if not asString: return d s = '{0:04X}'.format(d) - + return s def getBYTE(self, offset, asString=False): if offset + 1 > len(self.data): return None - b = bytearray(self.data[offset:offset+1]) + b = bytearray(self.data[offset:offset + 1]) d = (b[0]) & 0xFF - if not asString: + if not asString: return d s = '{0:02X}'.format(d) - + return s def getChar(self, offset): @@ -199,6 +202,7 @@ class DataModel(Observer): def size(self): pass + class FileDataModel(DataModel): def __init__(self, filename): self._filename = filename @@ -237,7 +241,10 @@ class FileDataModel(DataModel): def size(self): return os.path.getsize(self._filename) + import io + + class MyStringIO(io.StringIO, object): def __init__(self, data): self.raw = data @@ -246,6 +253,7 @@ class MyStringIO(io.StringIO, object): def __len__(self): return len(self.raw) + class MyByte(bytearray): def __init__(self, data): self.raw = data @@ -275,6 +283,7 @@ class MyByte(bytearray): self._pointer += size return data + class BufferDataModel(DataModel): def __init__(self, data, name): self._filename = name @@ -291,13 +300,14 @@ class BufferDataModel(DataModel): def close(self): return -# def write(self, offset, stream): -# self._mapped.seek(offset) -# self._mapped.write(stream) + # def write(self, offset, stream): + # self._mapped.seek(offset) + # self._mapped.write(stream) def size(self): return len(self.data) + class ApkModel(DataModel): def __init__(self, apkobj): print(apkobj) @@ -323,6 +333,7 @@ class ApkModel(DataModel): def size(self): return len(self.data) + class DexClassModel(DataModel): def __init__(self, current_class): self.current_class = current_class diff --git a/androguard/gui/DisasmViewMode.py b/androguard/gui/DisasmViewMode.py index 1c260306..a8fca50e 100644 --- a/androguard/gui/DisasmViewMode.py +++ b/androguard/gui/DisasmViewMode.py @@ -27,14 +27,14 @@ class InstructionView(object): def AddComment(self, cmt): self._Comments.append(cmt) - + def Load(self): if self.loaded: return H = self.get_hex().split(' ') for i, h in enumerate(H): - self._indexTable += [(i*3, len(h), h)] + self._indexTable += [(i * 3, len(h), h)] self._indexTable += [(MNEMONIC_COLUMN, len(self.get_name()), self.get_name())] @@ -151,7 +151,6 @@ class InstructionView(object): return idx, 0 - def getSelectedToken(self, cx): for i, t in enumerate(self._indexTable): idx, length, value = t @@ -209,8 +208,8 @@ class DisasmViewMode(ViewMode): for method in methods: mx = vm_analysis.get_method(method) for DVMBasicMethodBlockInstruction in method.get_instructions(): - #for DVMBasicMethodBlock in mx.basic_blocks.gets(): - # for DVMBasicMethodBlockInstruction in DVMBasicMethodBlock.get_instructions(): + # for DVMBasicMethodBlock in mx.basic_blocks.gets(): + # for DVMBasicMethodBlockInstruction in DVMBasicMethodBlock.get_instructions(): ins = InstructionView(DVMBasicMethodBlockInstruction) self.CACHE_OPCODES.append(ins) self.CACHE_IDX_OPCODES[offset] = ins @@ -246,7 +245,6 @@ class DisasmViewMode(ViewMode): ins.Load() self.OPCODES.append(ins) - @property def fontWidth(self): return self._fontWidth @@ -259,8 +257,8 @@ class DisasmViewMode(ViewMode): self.transformationEngine = engine def resize(self, width, height): - self.width = width - width%self.fontWidth - self.height = height - height%self.fontHeight + self.width = width - width % self.fontWidth + self.height = height - height % self.fontHeight self.computeTextArea() self.qpix = self._getNewPixmap(self.width, self.height + self.SPACER) self.refresh = True @@ -374,9 +372,8 @@ class DisasmViewMode(ViewMode): brush) qp.setOpacity(1) - def drawBranch(self, qp): - qp.fillRect(-50, 0, 50, self.ROWS * self.fontHeight, self.backgroundBrush) + qp.fillRect(-50, 0, 50, self.ROWS * self.fontHeight, self.backgroundBrush) def drawBranch2(self, qp): @@ -400,29 +397,30 @@ class DisasmViewMode(ViewMode): return screenVA = self._getVA(self.dataModel.getOffset()) - if target > screenVA and target < self._getVA(self.dataModel.getOffset()) + tsize - self.OPCODES[-1].size: + if target > screenVA and target < self._getVA(self.dataModel.getOffset()) + tsize - self.OPCODES[-1].size: # branch target is in screen sz = 0 for i, t in enumerate(self.OPCODES): sz += t.size - if sz+self._getVA(self.dataModel.getOffset()) >= target: + if sz + self._getVA(self.dataModel.getOffset()) >= target: break qp.setPen(QtGui.QPen(QtGui.QColor(0, 192, 0), 1, QtCore.Qt.SolidLine)) # draw the three lines - qp.drawLine(-5, cursorY*self.fontHeight + self.fontHeight // 2, -30, cursorY*self.fontHeight + half) + qp.drawLine(-5, cursorY * self.fontHeight + self.fontHeight // 2, -30, cursorY * self.fontHeight + half) - qp.drawLine(-30, cursorY*self.fontHeight + self.fontHeight // 2, -30, (i + 1)*self.fontHeight + half) + qp.drawLine(-30, cursorY * self.fontHeight + self.fontHeight // 2, -30, + (i + 1) * self.fontHeight + half) - qp.drawLine(-30, (i + 1)*self.fontHeight + half, -15, (i + 1)*self.fontHeight + half) + qp.drawLine(-30, (i + 1) * self.fontHeight + half, -15, (i + 1) * self.fontHeight + half) # draw arrow - points = [QtCore.QPoint(-15, (i + 1)*self.fontHeight + half - 5), - QtCore.QPoint(-15, (i + 1)*self.fontHeight + half + 5), - QtCore.QPoint(-5, (i + 1)*self.fontHeight + half), ] + points = [QtCore.QPoint(-15, (i + 1) * self.fontHeight + half - 5), + QtCore.QPoint(-15, (i + 1) * self.fontHeight + half + 5), + QtCore.QPoint(-5, (i + 1) * self.fontHeight + half), ] needle = QtGui.QPolygon(points) qp.setBrush(QtGui.QBrush(QtGui.QColor(0, 128, 0))) qp.drawPolygon(needle) @@ -435,13 +433,14 @@ class DisasmViewMode(ViewMode): qp.setPen(QtGui.QPen(QtGui.QColor(0, 192, 0), 1, QtCore.Qt.DotLine)) # draw the two lines - qp.drawLine(-5, cursorY*self.fontHeight + self.fontHeight // 2, -30, cursorY*self.fontHeight + half) - qp.drawLine(-30, cursorY*self.fontHeight + self.fontHeight // 2, -30, (self.ROWS - 2)*self.fontHeight + half) + qp.drawLine(-5, cursorY * self.fontHeight + self.fontHeight // 2, -30, cursorY * self.fontHeight + half) + qp.drawLine(-30, cursorY * self.fontHeight + self.fontHeight // 2, -30, + (self.ROWS - 2) * self.fontHeight + half) # draw arrow - points = [QtCore.QPoint(-25, (self.ROWS - 2)*self.fontHeight + half), - QtCore.QPoint(-35, (self.ROWS - 2)*self.fontHeight + half), - QtCore.QPoint(-30, (self.ROWS - 2)*self.fontHeight + 2*half), ] + points = [QtCore.QPoint(-25, (self.ROWS - 2) * self.fontHeight + half), + QtCore.QPoint(-35, (self.ROWS - 2) * self.fontHeight + half), + QtCore.QPoint(-30, (self.ROWS - 2) * self.fontHeight + 2 * half), ] needle = QtGui.QPolygon(points) qp.setBrush(QtGui.QBrush(QtGui.QColor(0, 128, 0))) qp.drawPolygon(needle) @@ -453,24 +452,22 @@ class DisasmViewMode(ViewMode): qp.setPen(QtGui.QPen(QtGui.QColor(0, 192, 0), 1, QtCore.Qt.DotLine)) # draw the two lines - qp.drawLine(-5, cursorY*self.fontHeight + self.fontHeight // 2, -30, cursorY*self.fontHeight + half) - qp.drawLine(-30, cursorY*self.fontHeight + self.fontHeight // 2, -30, (1)*self.fontHeight + half) + qp.drawLine(-5, cursorY * self.fontHeight + self.fontHeight // 2, -30, cursorY * self.fontHeight + half) + qp.drawLine(-30, cursorY * self.fontHeight + self.fontHeight // 2, -30, (1) * self.fontHeight + half) # draw arrow - points = [QtCore.QPoint(-25, (1)*self.fontHeight + half), - QtCore.QPoint(-35, (1)*self.fontHeight + half), - QtCore.QPoint(-30, (1)*self.fontHeight), ] + points = [QtCore.QPoint(-25, (1) * self.fontHeight + half), + QtCore.QPoint(-35, (1) * self.fontHeight + half), + QtCore.QPoint(-30, (1) * self.fontHeight), ] needle = QtGui.QPolygon(points) qp.setBrush(QtGui.QBrush(QtGui.QColor(0, 128, 0))) qp.drawPolygon(needle) - - def draw(self, refresh=False): if self.dataModel.getOffset() in self.Paints: self.refresh = False self.qpix = QtGui.QPixmap(self.Paints[self.dataModel.getOffset()]) - #print 'hit' + # print 'hit' self.drawAdditionals() return @@ -478,27 +475,27 @@ class DisasmViewMode(ViewMode): qp = QtGui.QPainter() qp.begin(self.qpix) # viewport - #qp.fillRect(0, 0, self.COLUMNS * self.fontWidth, self.ROWS * self.fontHeight, self.backgroundBrush) + # qp.fillRect(0, 0, self.COLUMNS * self.fontWidth, self.ROWS * self.fontHeight, self.backgroundBrush) - #start = time() + # start = time() self.drawTextMode(qp) - #end = time() - start - #print 'Time ' + str(end) + # end = time() - start + # print 'Time ' + str(end) self.refresh = False qp.end() -# self.Paints[self.dataModel.getOffset()] = QtGui.QPixmap(self.qpix) + # self.Paints[self.dataModel.getOffset()] = QtGui.QPixmap(self.qpix) self.drawAdditionals() def drawAdditionals(self): self.newPix = self._getNewPixmap(self.width, self.height + self.SPACER) qp = QtGui.QPainter() qp.begin(self.newPix) - qp.setWindow(-50, 0, self.COLUMNS * self.fontWidth, self.ROWS * self.fontHeight) + qp.setWindow(-50, 0, self.COLUMNS * self.fontWidth, self.ROWS * self.fontHeight) qp.drawPixmap(0, 0, self.qpix) - #self.transformationEngine.decorateText() + # self.transformationEngine.decorateText() # highlight selected text self.selector.highlightText() @@ -529,7 +526,6 @@ class DisasmViewMode(ViewMode): return self.plugin.hintDisasmVA(offset) return 0 - def _drawRow(self, qp, cemu, row, asm, offset=-1): print('DRAW AN INSTRUCTION', asm, row, asm.get_name(), len(asm.get_operands(offset)), hex(self.getPageOffset())) @@ -541,12 +537,12 @@ class DisasmViewMode(ViewMode): cemu.writeAt(0, row, hex_data) # fill with spaces - cemu.write((MNEMONIC_COLUMN - len(hex_data))*' ') + cemu.write((MNEMONIC_COLUMN - len(hex_data)) * ' ') # let's color some branch instr - #if asm.isBranch(): + # if asm.isBranch(): # qp.setPen(QtGui.QPen(QtGui.QColor(255, 80, 0))) - #else: + # else: qp.setPen(QtGui.QPen(QtGui.QColor(192, 192, 192), 1, QtCore.Qt.SolidLine)) mnemonic = asm.get_name() @@ -577,7 +573,7 @@ class DisasmViewMode(ViewMode): cemu.write('; "{0}"'.format(' '.join(comments))) def _write_operands(self, asm, qp, cemu, offset): - qp.setPen(QtGui.QPen(QtGui.QColor(192, 192, 192), 1, QtCore.Qt.SolidLine)) + qp.setPen(QtGui.QPen(QtGui.QColor(192, 192, 192), 1, QtCore.Qt.SolidLine)) operands = asm.get_operands(offset) for operand in operands: @@ -632,7 +628,7 @@ class DisasmViewMode(ViewMode): qp.save() if tok.type == 'REGISTER': qp.setPen(QtGui.QPen(QtGui.QColor('white'))) - + if tok.type == 'NUMBER': qp.setPen(QtGui.QPen(QtGui.QColor('green'))) @@ -647,12 +643,12 @@ class DisasmViewMode(ViewMode): def drawTextMode(self, qp): print('OFFSET', self.dataModel.getOffset()) # draw background - qp.fillRect(0, 0, self.COLUMNS * self.fontWidth, self.ROWS * self.fontHeight, self.backgroundBrush) + qp.fillRect(0, 0, self.COLUMNS * self.fontWidth, self.ROWS * self.fontHeight, self.backgroundBrush) # set text pen&font qp.setFont(self.font) qp.setPen(self.textPen) - + cemu = ConsoleEmulator(qp, self.ROWS, self.COLUMNS) offset = 0 @@ -662,7 +658,6 @@ class DisasmViewMode(ViewMode): self._drawRow(qp, cemu, i, asm, offset) offset += asm.get_length() - def _getRowInPage(self, offset): offset -= self.dataModel.getOffset() @@ -681,23 +676,23 @@ class DisasmViewMode(ViewMode): if i == row: return size - size += asm.get_length() + size += asm.get_length() return None def goTo(self, offset): print("GOTO ", offset) - + tsize = sum([opcode.get_length() for opcode in self.OPCODES]) if offset < self.dataModel.getOffset() + tsize and offset > self.dataModel.getOffset(): # if in current page, move cursor row = self._getRowInPage(offset) off_row = self._getOffsetOfRow(row) - diff = offset - self.dataModel.getOffset() - off_row# self.OPCODES[row].size + diff = offset - self.dataModel.getOffset() - off_row # self.OPCODES[row].size if row is not None: - self.cursor.moveAbsolute((diff)*3, row) + self.cursor.moveAbsolute((diff) * 3, row) self.draw(refresh=False) else: @@ -707,15 +702,14 @@ class DisasmViewMode(ViewMode): self.cursor.moveAbsolute(0, 0) self.draw(refresh=True) - #TODO: getDisplayablePage() won't contain what we want to disasm. we will use dataModel + # TODO: getDisplayablePage() won't contain what we want to disasm. we will use dataModel # in this view, getDisplayablePage will contain disasm text, because that is what is displayed if self.widget: self.widget.update() - def scrollPages(self, number, cachePix=None, pageOffset=None): - self.scroll(0, -number*self.ROWS, cachePix=cachePix, pageOffset=pageOffset) + self.scroll(0, -number * self.ROWS, cachePix=cachePix, pageOffset=pageOffset) def scroll_v(self, dy, cachePix=None, pageOffset=None): print('scroll_v', dy, cachePix, pageOffset, hex(self.getCursorAbsolutePosition())) @@ -745,7 +739,7 @@ class DisasmViewMode(ViewMode): current_offset = self.dataModel.getOffset() current_idx = self.CACHE_IDX_OPCODES_OFF[current_offset] print("IDX", current_idx, hex(current_offset)) - #start = self.CACHE_OPCODES[self.CACHE_IDX_OPCODES_OFF[self.getCursorAbsolutePosition()]-1] + # start = self.CACHE_OPCODES[self.CACHE_IDX_OPCODES_OFF[self.getCursorAbsolutePosition()]-1] current_idx -= 1 newins = self.CACHE_OPCODES[current_idx] @@ -754,7 +748,6 @@ class DisasmViewMode(ViewMode): self.dataModel.slide(self.OPCODES[0].get_length()) del self.OPCODES[0] - if dy >= 0: self.dataModel.slide(-newins.get_length()) del self.OPCODES[len(self.OPCODES) - 1] @@ -774,11 +767,11 @@ class DisasmViewMode(ViewMode): print('ROW TO DRAW', RowsToDraw) if len(RowsToDraw) < abs(dy): # maybe we couldn't draw dy rows (possible we reached the beginning of the data to early), recalculate dy - dy = len(RowsToDraw)*dy/abs(dy) + dy = len(RowsToDraw) * dy / abs(dy) factor = abs(dy) if not cachePix: - self.qpix.scroll(0, dy*self.fontHeight, self.qpix.rect()) + self.qpix.scroll(0, dy * self.fontHeight, self.qpix.rect()) qp = QtGui.QPainter() if cachePix: @@ -791,10 +784,11 @@ class DisasmViewMode(ViewMode): # erase rows that will disappear if dy < 0: - qp.fillRect(0, (self.ROWS-factor)*self.fontHeight, self.fontWidth*self.COLUMNS, factor * self.fontHeight, self.backgroundBrush) + qp.fillRect(0, (self.ROWS - factor) * self.fontHeight, self.fontWidth * self.COLUMNS, + factor * self.fontHeight, self.backgroundBrush) if dy > 0: - qp.fillRect(0, 0, self.fontWidth*self.COLUMNS, factor * self.fontHeight, self.backgroundBrush) + qp.fillRect(0, 0, self.fontWidth * self.COLUMNS, factor * self.fontHeight, self.backgroundBrush) cemu = ConsoleEmulator(qp, self.ROWS, self.COLUMNS) @@ -806,12 +800,13 @@ class DisasmViewMode(ViewMode): print('') def scroll(self, dx, dy, cachePix=None, pageOffset=None): - print('scroll ', dx, dy, self.dataModel.inLimits((self.dataModel.getOffset() - dx)), 'offset', self.dataModel.getOffset()) + print('scroll ', dx, dy, self.dataModel.inLimits((self.dataModel.getOffset() - dx)), 'offset', + self.dataModel.getOffset()) if dx != 0: if self.dataModel.inLimits((self.dataModel.getOffset() - dx)): self.dataModel.slide(dx) self.draw(refresh=True) - #self.scroll_h(dx) + # self.scroll_h(dx) if dy != 0: if dy > 0: @@ -822,13 +817,12 @@ class DisasmViewMode(ViewMode): if dy < 0: tsize = sum([asm.get_length() for asm in self.OPCODES]) - if self.dataModel.getOffset() + tsize == self.dataModel.getDataSize(): + if self.dataModel.getOffset() + tsize == self.dataModel.getDataSize(): print('END') return self.scroll_v(dy, cachePix, pageOffset) - def moveCursor(self, direction): cursorX, cursorY = self.cursor.getPosition() @@ -847,14 +841,13 @@ class DisasmViewMode(ViewMode): self.cursor.moveAbsolute(idx, cursorY - 1) else: x, dy = asm.getNextCursor(cursorX, direction=Directions.Left) - self.cursor.move(-(cursorX-x), dy) - + self.cursor.move(-(cursorX - x), dy) if direction == Directions.Right: asm = self.OPCODES[cursorY] x, dy = asm.getNextCursor(cursorX, direction=Directions.Right) - if cursorY == self.ROWS-1 and dy > 0: + if cursorY == self.ROWS - 1 and dy > 0: self.scroll(0, -1) self.cursor.moveAbsolute(0, cursorY) @@ -862,10 +855,10 @@ class DisasmViewMode(ViewMode): if cursorY + dy >= len(self.OPCODES): dy = 0 - self.cursor.move(x-cursorX, dy) + self.cursor.move(x - cursorX, dy) if direction == Directions.Down: - if cursorY == self.ROWS-1: + if cursorY == self.ROWS - 1: # move cursor to first token self.scroll(0, -1) self.cursor.moveAbsolute(0, cursorY) @@ -893,14 +886,13 @@ class DisasmViewMode(ViewMode): if direction == Directions.Home: self.cursor.moveAbsolute(0, 0) - if direction == Directions.CtrlHome: self.goTo(0) if direction == Directions.CtrlEnd: self.dataModel.slideToLastPage() self.draw(refresh=True) - self.cursor.moveAbsolute(self.COLUMNS-1, self.ROWS-1) + self.cursor.moveAbsolute(self.COLUMNS - 1, self.ROWS - 1) def _followBranch(self): cursorX, cursorY = self.cursor.getPosition() @@ -931,7 +923,8 @@ class DisasmViewMode(ViewMode): if event.type() == QtCore.QEvent.KeyPress: if modifiers == QtCore.Qt.ShiftModifier: - keys = [QtCore.Qt.Key_Right, QtCore.Qt.Key_Left, QtCore.Qt.Key_Down, QtCore.Qt.Key_Up, QtCore.Qt.Key_End, QtCore.Qt.Key_Home] + keys = [QtCore.Qt.Key_Right, QtCore.Qt.Key_Left, QtCore.Qt.Key_Down, QtCore.Qt.Key_Up, + QtCore.Qt.Key_End, QtCore.Qt.Key_Home] if key in keys: self.startSelection() @@ -959,11 +952,11 @@ class DisasmViewMode(ViewMode): if key == QtCore.Qt.Key_Home: self.moveCursor(Directions.CtrlHome) self.addop((self.draw,)) - #self.draw() + # self.draw() return True - else:#elif modifiers == QtCore.Qt.NoModifier: + else: # elif modifiers == QtCore.Qt.NoModifier: if key == QtCore.Qt.Key_Escape: self.selector.resetSelections() @@ -972,37 +965,37 @@ class DisasmViewMode(ViewMode): if key == QtCore.Qt.Key_Left: self.moveCursor(Directions.Left) self.addop((self.draw,)) - #self.draw() + # self.draw() if key == QtCore.Qt.Key_Right: self.moveCursor(Directions.Right) self.addop((self.draw,)) - #self.draw() - + # self.draw() + if key == QtCore.Qt.Key_Down: self.moveCursor(Directions.Down) self.addop((self.draw,)) - #self.draw() - + # self.draw() + if key == QtCore.Qt.Key_End: self.moveCursor(Directions.End) self.addop((self.draw,)) - #self.draw() - + # self.draw() + if key == QtCore.Qt.Key_Home: self.moveCursor(Directions.Home) self.addop((self.draw,)) - #self.draw() + # self.draw() if key == QtCore.Qt.Key_Up: self.moveCursor(Directions.Up) self.addop((self.draw,)) - #self.draw() - + # self.draw() + if key == QtCore.Qt.Key_PageDown: self.addop((self.scrollPages, 1)) self.addop((self.draw,)) - + if key == QtCore.Qt.Key_PageUp: self.addop((self.scrollPages, -1)) self.addop((self.draw,)) diff --git a/androguard/gui/HexViewMode.py b/androguard/gui/HexViewMode.py index e721d9dc..1134422d 100644 --- a/androguard/gui/HexViewMode.py +++ b/androguard/gui/HexViewMode.py @@ -35,12 +35,12 @@ class HexViewMode(ViewMode): # text font self.font = themes['font'] - + # font metrics. assume font is monospaced self.font.setKerning(False) self.font.setFixedPitch(True) fm = QtGui.QFontMetrics(self.font) - self._fontWidth = fm.width('a') + self._fontWidth = fm.width('a') self._fontHeight = fm.height() self.Special = string.ascii_letters + string.digits + ' .;\':;=\"?-!()/\\_' @@ -50,7 +50,7 @@ class HexViewMode(ViewMode): self.cursor = cursor self.HexColumns = [1, 4, 8, 16, 32, 36, 40] - self.idxHexColumns = 3 # 32 columns + self.idxHexColumns = 3 # 32 columns self.newPix = None self.Ops = [] @@ -69,7 +69,6 @@ class HexViewMode(ViewMode): def fontHeight(self): return self._fontHeight - def setTransformationEngine(self, engine): self.transformationEngine = engine self.original_textdecorator = engine @@ -78,7 +77,7 @@ class HexViewMode(ViewMode): return QtGui.QPixmap(width, height) def getPixmap(self): - #return self.qpix + # return self.qpix for t in self.Ops: if len(t) == 1: @@ -114,7 +113,7 @@ class HexViewMode(ViewMode): def getCursorAbsolutePosition(self): x, y = self.cursor.getPosition() - return self.dataModel.getOffset() + y*self.COLUMNS + x + return self.dataModel.getOffset() + y * self.COLUMNS + x def computeTextArea(self): self.COLUMNS = self.HexColumns[self.idxHexColumns] @@ -123,8 +122,8 @@ class HexViewMode(ViewMode): self.notify(self.ROWS, self.COLUMNS) def resize(self, width, height): - self.width = width - width%self.fontWidth - self.height = height - height%self.fontHeight + self.width = width - width % self.fontWidth + self.height = height - height % self.fontHeight self.computeTextArea() self.qpix = self._getNewPixmap(self.width, self.height + self.SPACER) self.refresh = True @@ -136,13 +135,12 @@ class HexViewMode(ViewMode): self.idxHexColumns += 1 # if screen is ont big enough, retry - if self.HexColumns[self.idxHexColumns]*(3+1) + self.gap >= self.CON_COLUMNS: + if self.HexColumns[self.idxHexColumns] * (3 + 1) + self.gap >= self.CON_COLUMNS: self.changeHexColumns() return self.resize(self.width, self.height) - def scroll(self, dx, dy): if dx != 0: if self.dataModel.inLimits((self.dataModel.getOffset() - dx)): @@ -150,13 +148,13 @@ class HexViewMode(ViewMode): self.scroll_h(dx) if dy != 0: - if self.dataModel.inLimits((self.dataModel.getOffset() - dy*self.COLUMNS)): - self.dataModel.slide(-dy*self.COLUMNS) + if self.dataModel.inLimits((self.dataModel.getOffset() - dy * self.COLUMNS)): + self.dataModel.slide(-dy * self.COLUMNS) self.scroll_v(dy) else: if dy <= 0: pass - #self.dataModel.slideToLastPage() + # self.dataModel.slideToLastPage() else: self.dataModel.slideToFirstPage() self.draw(refresh=True) @@ -164,7 +162,7 @@ class HexViewMode(ViewMode): self.draw() def scrollPages(self, number): - self.scroll(0, -number*self.ROWS) + self.scroll(0, -number * self.ROWS) def drawAdditionals(self): self.newPix = self._getNewPixmap(self.width, self.height + self.SPACER) @@ -172,7 +170,7 @@ class HexViewMode(ViewMode): qp.begin(self.newPix) qp.drawPixmap(0, 0, self.qpix) - #self.transformationEngine.decorateText() + # self.transformationEngine.decorateText() # highlight selected text self.selector.highlightText() @@ -187,19 +185,20 @@ class HexViewMode(ViewMode): for i in range(self.COLUMNS // 4)[1:]: xw = i * 4 * 3 * self.fontWidth - 4 qp.setPen(QtGui.QColor(0, 255, 0)) - qp.drawLine(xw, 0, xw, self.ROWS*self.fontHeight) - + qp.drawLine(xw, 0, xw, self.ROWS * self.fontHeight) qp.end() - def scroll_h(self, dx): gap = self.gap # hex part - self.qpix.scroll(dx*3*self.fontWidth, 0, QtCore.QRect(0, 0, self.COLUMNS*3*self.fontWidth, self.ROWS*self.fontHeight + self.SPACER)) + self.qpix.scroll(dx * 3 * self.fontWidth, 0, QtCore.QRect(0, 0, self.COLUMNS * 3 * self.fontWidth, + self.ROWS * self.fontHeight + self.SPACER)) # text part - self.qpix.scroll(dx*self.fontWidth, 0, QtCore.QRect((self.COLUMNS*3 + gap)*self.fontWidth , 0, self.COLUMNS*self.fontWidth, self.ROWS*self.fontHeight + self.SPACER)) + self.qpix.scroll(dx * self.fontWidth, 0, + QtCore.QRect((self.COLUMNS * 3 + gap) * self.fontWidth, 0, self.COLUMNS * self.fontWidth, + self.ROWS * self.fontHeight + self.SPACER)) qp = QtGui.QPainter() @@ -212,17 +211,21 @@ class HexViewMode(ViewMode): # There are some trails from the characters, when scrolling. trail == number of pixel to erase near the character trail = 5 - textBegining = self.COLUMNS*3 + gap + textBegining = self.COLUMNS * 3 + gap if dx < 0: # hex - qp.fillRect((self.COLUMNS - 1*factor)*3*self.fontWidth, 0, factor * self.fontWidth * 3, self.ROWS*self.fontHeight + self.SPACER, self.backgroundBrush) + qp.fillRect((self.COLUMNS - 1 * factor) * 3 * self.fontWidth, 0, factor * self.fontWidth * 3, + self.ROWS * self.fontHeight + self.SPACER, self.backgroundBrush) # text - qp.fillRect((textBegining + self.COLUMNS - 1*factor)*self.fontWidth, 0, factor * self.fontWidth+trail, self.ROWS*self.fontHeight + self.SPACER, self.backgroundBrush) + qp.fillRect((textBegining + self.COLUMNS - 1 * factor) * self.fontWidth, 0, factor * self.fontWidth + trail, + self.ROWS * self.fontHeight + self.SPACER, self.backgroundBrush) if dx > 0: # hex - qp.fillRect(0, 0, factor * 3 * self.fontWidth, self.ROWS*self.fontHeight + self.SPACER, self.backgroundBrush) + qp.fillRect(0, 0, factor * 3 * self.fontWidth, self.ROWS * self.fontHeight + self.SPACER, + self.backgroundBrush) # text - qp.fillRect(textBegining*self.fontWidth - trail, 0, factor * self.fontWidth + trail, self.ROWS*self.fontHeight + self.SPACER, self.backgroundBrush) + qp.fillRect(textBegining * self.fontWidth - trail, 0, factor * self.fontWidth + trail, + self.ROWS * self.fontHeight + self.SPACER, self.backgroundBrush) cemu = ConsoleEmulator(qp, self.ROWS, self.CON_COLUMNS) @@ -234,9 +237,9 @@ class HexViewMode(ViewMode): if dx < 0: # cu (column) selectam coloana - idx = (i+1)*(self.COLUMNS) - (column + 1) + idx = (i + 1) * (self.COLUMNS) - (column + 1) if dx > 0: - idx = (i)*(self.COLUMNS) + (column) + idx = (i) * (self.COLUMNS) + (column) if len(self.getDisplayablePage()) > idx: qp.setPen(self.transformationEngine.choosePen(idx)) @@ -252,11 +255,11 @@ class HexViewMode(ViewMode): hex_s = str(hex(c)[2:]).zfill(2) + ' ' if dx < 0: - cemu.writeAt((self.COLUMNS - (column + 1))*3, i, hex_s, noBackgroudOnSpaces=True) + cemu.writeAt((self.COLUMNS - (column + 1)) * 3, i, hex_s, noBackgroudOnSpaces=True) cemu.writeAt(textBegining + self.COLUMNS - (column + 1), i, self.cp437(c)) if dx > 0: - cemu.writeAt((column)*3, i, hex_s, noBackgroudOnSpaces=True) + cemu.writeAt((column) * 3, i, hex_s, noBackgroudOnSpaces=True) cemu.writeAt(textBegining + column, i, self.cp437(c)) qp.setBackgroundMode(0) @@ -264,7 +267,7 @@ class HexViewMode(ViewMode): qp.end() def scroll_v(self, dy): - self.qpix.scroll(0, dy*self.fontHeight, self.qpix.rect()) + self.qpix.scroll(0, dy * self.fontHeight, self.qpix.rect()) qp = QtGui.QPainter() @@ -278,12 +281,12 @@ class HexViewMode(ViewMode): if dy < 0: cemu.gotoXY(0, self.ROWS - factor) - qp.fillRect(0, (self.ROWS-factor)*self.fontHeight, self.fontWidth*self.CON_COLUMNS, factor * self.fontHeight + self.SPACER, self.backgroundBrush) + qp.fillRect(0, (self.ROWS - factor) * self.fontHeight, self.fontWidth * self.CON_COLUMNS, + factor * self.fontHeight + self.SPACER, self.backgroundBrush) if dy > 0: cemu.gotoXY(0, 0) - qp.fillRect(0, 0, self.fontWidth*self.CON_COLUMNS, factor * self.fontHeight, self.backgroundBrush) - + qp.fillRect(0, 0, self.fontWidth * self.CON_COLUMNS, factor * self.fontHeight, self.backgroundBrush) page = self.transformationEngine.decorate() @@ -295,9 +298,9 @@ class HexViewMode(ViewMode): if dy < 0: # we write from top-down, so get index of the first row that will be displayed # this is why we have factor - row - idx = i + (self.ROWS - (factor - row))*self.COLUMNS + idx = i + (self.ROWS - (factor - row)) * self.COLUMNS if dy > 0: - idx = i + (self.COLUMNS*row) + idx = i + (self.COLUMNS * row) qp.setPen(self.transformationEngine.choosePen(idx)) @@ -321,14 +324,13 @@ class HexViewMode(ViewMode): # save hex position x, y = cemu.getXY() # write text - cemu.writeAt(self.COLUMNS*3 + self.gap + (i%self.COLUMNS), y, self.cp437(c)) + cemu.writeAt(self.COLUMNS * 3 + self.gap + (i % self.COLUMNS), y, self.cp437(c)) # go back to hex chars cemu.gotoXY(x, y) qp.setBackgroundMode(0) - cemu.writeLn() qp.end() @@ -349,7 +351,8 @@ class HexViewMode(ViewMode): def drawTextMode(self, qp, row=0, howMany=1): # draw background - qp.fillRect(0, row * self.fontHeight, self.CON_COLUMNS * self.fontWidth, howMany * self.fontHeight + self.SPACER, self.backgroundBrush) + qp.fillRect(0, row * self.fontHeight, self.CON_COLUMNS * self.fontWidth, + howMany * self.fontHeight + self.SPACER, self.backgroundBrush) # set text pen&font qp.setFont(self.font) @@ -361,11 +364,12 @@ class HexViewMode(ViewMode): cemu.gotoXY(0, row) - for i, c in enumerate(self.getDisplayablePage()[row*self.COLUMNS:(row + howMany)*self.COLUMNS]): #TODO: does not apply all decorators + for i, c in enumerate(self.getDisplayablePage()[row * self.COLUMNS:( + row + howMany) * self.COLUMNS]): # TODO: does not apply all decorators - w = i + row*self.COLUMNS + w = i + row * self.COLUMNS - if (w+1)%self.COLUMNS == 0: + if (w + 1) % self.COLUMNS == 0: hex_s = str(hex(c)[2:]).zfill(2) else: hex_s = str(hex(c)[2:]).zfill(2) + ' ' @@ -381,16 +385,16 @@ class HexViewMode(ViewMode): # save hex position x, y = cemu.getXY() # write text - cemu.writeAt(self.COLUMNS*3 + self.gap + (w%self.COLUMNS), y, self.cp437(c)) + cemu.writeAt(self.COLUMNS * 3 + self.gap + (w % self.COLUMNS), y, self.cp437(c)) # go back to hex chars cemu.gotoXY(x, y) - if (w+1)%self.COLUMNS == 0: + if (w + 1) % self.COLUMNS == 0: cemu.writeLn() qp.setBackgroundMode(0) def moveCursor(self, direction): - #TODO: have to move this, don't like it + # TODO: have to move this, don't like it if self.isInEditMode(): if self.highpart == False: self.highpart = True @@ -402,31 +406,29 @@ class HexViewMode(ViewMode): if cursorY == 0: self.scroll(1, 0) else: - self.cursor.moveAbsolute(self.COLUMNS-1, cursorY - 1) + self.cursor.moveAbsolute(self.COLUMNS - 1, cursorY - 1) else: self.cursor.move(-1, 0) - if direction == Directions.Right: if self.getCursorAbsolutePosition() + 1 >= self.dataModel.getDataSize(): return - if cursorX == self.COLUMNS-1: - if cursorY == self.ROWS-1: + if cursorX == self.COLUMNS - 1: + if cursorY == self.ROWS - 1: self.scroll(-1, 0) else: self.cursor.moveAbsolute(0, cursorY + 1) else: self.cursor.move(1, 0) - if direction == Directions.Down: if self.getCursorAbsolutePosition() + self.COLUMNS >= self.dataModel.getDataSize(): - y, x = self.dataModel.getXYInPage(self.dataModel.getDataSize()-1) + y, x = self.dataModel.getXYInPage(self.dataModel.getDataSize() - 1) self.cursor.moveAbsolute(x, y) return - if cursorY == self.ROWS-1: + if cursorY == self.ROWS - 1: self.scroll(0, -1) else: self.cursor.move(0, 1) @@ -439,11 +441,11 @@ class HexViewMode(ViewMode): if direction == Directions.End: if self.dataModel.getDataSize() < self.getCursorAbsolutePosition() + self.ROWS * self.COLUMNS: - y, x = self.dataModel.getXYInPage(self.dataModel.getDataSize()-1) + y, x = self.dataModel.getXYInPage(self.dataModel.getDataSize() - 1) self.cursor.moveAbsolute(x, y) else: - self.cursor.moveAbsolute(self.COLUMNS-1, self.ROWS-1) + self.cursor.moveAbsolute(self.COLUMNS - 1, self.ROWS - 1) if direction == Directions.Home: self.cursor.moveAbsolute(0, 0) @@ -458,8 +460,6 @@ class HexViewMode(ViewMode): self.draw(refresh=True) self.moveCursor(Directions.End) - - def drawCursor(self, qp): qp.setBrush(QtGui.QColor(255, 255, 0)) if self.isInEditMode(): @@ -469,7 +469,7 @@ class HexViewMode(ViewMode): columns = self.HexColumns[self.idxHexColumns] if cursorX > columns: - self.cursor.moveAbsolute(columns-1, cursorY) + self.cursor.moveAbsolute(columns - 1, cursorY) # get cursor position again, maybe it was moved cursorX, cursorY = self.cursor.getPosition() @@ -478,41 +478,42 @@ class HexViewMode(ViewMode): if self.isInEditMode(): qp.setOpacity(0.5) # cursor on text - qp.drawRect((self.COLUMNS*3 + self.gap + cursorX)*self.fontWidth, cursorY*self.fontHeight+2, self.fontWidth, self.fontHeight) + qp.drawRect((self.COLUMNS * 3 + self.gap + cursorX) * self.fontWidth, cursorY * self.fontHeight + 2, + self.fontWidth, self.fontHeight) # cursor on hex if not self.isInEditMode(): - qp.drawRect(cursorX*3*self.fontWidth, cursorY*self.fontHeight+2, 2*self.fontWidth, self.fontHeight) + qp.drawRect(cursorX * 3 * self.fontWidth, cursorY * self.fontHeight + 2, 2 * self.fontWidth, + self.fontHeight) else: if self.highpart: - qp.drawRect(cursorX*3*self.fontWidth, cursorY*self.fontHeight+2, 1*self.fontWidth, self.fontHeight) + qp.drawRect(cursorX * 3 * self.fontWidth, cursorY * self.fontHeight + 2, 1 * self.fontWidth, + self.fontHeight) else: - qp.drawRect(cursorX*3*self.fontWidth + self.fontWidth, cursorY*self.fontHeight+2, 1*self.fontWidth, self.fontHeight) + qp.drawRect(cursorX * 3 * self.fontWidth + self.fontWidth, cursorY * self.fontHeight + 2, + 1 * self.fontWidth, self.fontHeight) qp.setOpacity(1) def keyFilter(self): return [ - (QtCore.Qt.ControlModifier, QtCore.Qt.Key_Right), - (QtCore.Qt.ControlModifier, QtCore.Qt.Key_Left), - (QtCore.Qt.ControlModifier, QtCore.Qt.Key_Up), - (QtCore.Qt.ControlModifier, QtCore.Qt.Key_Down), - (QtCore.Qt.ControlModifier, QtCore.Qt.Key_End), - (QtCore.Qt.ControlModifier, QtCore.Qt.Key_Home), + (QtCore.Qt.ControlModifier, QtCore.Qt.Key_Right), + (QtCore.Qt.ControlModifier, QtCore.Qt.Key_Left), + (QtCore.Qt.ControlModifier, QtCore.Qt.Key_Up), + (QtCore.Qt.ControlModifier, QtCore.Qt.Key_Down), + (QtCore.Qt.ControlModifier, QtCore.Qt.Key_End), + (QtCore.Qt.ControlModifier, QtCore.Qt.Key_Home), + (QtCore.Qt.NoModifier, QtCore.Qt.Key_Right), + (QtCore.Qt.NoModifier, QtCore.Qt.Key_Left), + (QtCore.Qt.NoModifier, QtCore.Qt.Key_Up), + (QtCore.Qt.NoModifier, QtCore.Qt.Key_Down), + (QtCore.Qt.NoModifier, QtCore.Qt.Key_End), + (QtCore.Qt.NoModifier, QtCore.Qt.Key_Home), + (QtCore.Qt.NoModifier, QtCore.Qt.Key_PageDown), + (QtCore.Qt.NoModifier, QtCore.Qt.Key_PageUp) - (QtCore.Qt.NoModifier, QtCore.Qt.Key_Right), - (QtCore.Qt.NoModifier, QtCore.Qt.Key_Left), - (QtCore.Qt.NoModifier, QtCore.Qt.Key_Up), - (QtCore.Qt.NoModifier, QtCore.Qt.Key_Down), - (QtCore.Qt.NoModifier, QtCore.Qt.Key_End), - (QtCore.Qt.NoModifier, QtCore.Qt.Key_Home), - (QtCore.Qt.NoModifier, QtCore.Qt.Key_PageDown), - (QtCore.Qt.NoModifier, QtCore.Qt.Key_PageUp) - - - ] - + ] def anon(self, dx, dy): self.scroll(dx, dy) @@ -532,7 +533,8 @@ class HexViewMode(ViewMode): def handleEditMode(self, modifiers, key, event): - if str(event.text()).lower() in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']: + if str(event.text()).lower() in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', + 'f']: offs = self.getCursorOffsetInPage() @@ -544,10 +546,9 @@ class HexViewMode(ViewMode): # compute nibble if self.highpart: - b = ((z << 4) | (b & 0x0F)) & 0xFF + b = ((z << 4) | (b & 0x0F)) & 0xFF else: - b = ((b & 0xF0) | (z & 0x0F)) & 0xFF - + b = ((b & 0xF0) | (z & 0x0F)) & 0xFF block = modifiers == QtCore.Qt.AltModifier and self.selector.getCurrentSelection() @@ -560,20 +561,24 @@ class HexViewMode(ViewMode): for x in range(u, v): b = self.dataModel.getBYTE(x) if self.highpart: - b = ((z << 4) | (b & 0x0F)) & 0xFF + b = ((z << 4) | (b & 0x0F)) & 0xFF else: - b = ((b & 0xF0) | (z & 0x0F)) & 0xFF + b = ((b & 0xF0) | (z & 0x0F)) & 0xFF self.dataModel.setData_b(x, chr(b)) else: self.dataModel.setData_b(self.dataModel.getOffset() + offs, chr(b)) if block: - self.transformationEngine = RangePen(self.original_textdecorator, u, v, QtGui.QPen(QtGui.QColor(218, 94, 242), 0, QtCore.Qt.SolidLine), ignoreHighlights=True) + self.transformationEngine = RangePen(self.original_textdecorator, u, v, + QtGui.QPen(QtGui.QColor(218, 94, 242), 0, QtCore.Qt.SolidLine), + ignoreHighlights=True) else: z = self.dataModel.getOffset() + offs - #TODO: sa nu se repete, tre original_transformengine - self.transformationEngine = RangePen(self.original_textdecorator, z, z + 0, QtGui.QPen(QtGui.QColor(218, 94, 242), 0, QtCore.Qt.SolidLine), ignoreHighlights=True) + # TODO: sa nu se repete, tre original_transformengine + self.transformationEngine = RangePen(self.original_textdecorator, z, z + 0, + QtGui.QPen(QtGui.QColor(218, 94, 242), 0, QtCore.Qt.SolidLine), + ignoreHighlights=True) # se if we are at end of row, we must also redraw previous line highpart = self.highpart @@ -597,8 +602,7 @@ class HexViewMode(ViewMode): else: self.draw(refresh=True, row=y, howMany=1) if y > old_y: - self.draw(refresh=True, row=y-1, howMany=1) - + self.draw(refresh=True, row=y - 1, howMany=1) def handleKeyEvent(self, modifiers, key, event=None): if event.type() == QtCore.QEvent.KeyRelease: @@ -609,7 +613,8 @@ class HexViewMode(ViewMode): if event.type() == QtCore.QEvent.KeyPress: if modifiers == QtCore.Qt.ShiftModifier: - keys = [QtCore.Qt.Key_Right, QtCore.Qt.Key_Left, QtCore.Qt.Key_Down, QtCore.Qt.Key_Up, QtCore.Qt.Key_End, QtCore.Qt.Key_Home] + keys = [QtCore.Qt.Key_Right, QtCore.Qt.Key_Left, QtCore.Qt.Key_Down, QtCore.Qt.Key_Up, + QtCore.Qt.Key_End, QtCore.Qt.Key_Home] if key in keys: self.startSelection() @@ -621,7 +626,6 @@ class HexViewMode(ViewMode): self.add_annotation(1) return True - if modifiers == QtCore.Qt.ControlModifier: if key == QtCore.Qt.Key_A: self.add_annotation(2) @@ -632,7 +636,6 @@ class HexViewMode(ViewMode): if key == QtCore.Qt.Key_Left: self.addop((self.scroll, 1, 0)) - if key == QtCore.Qt.Key_Down: self.addop((self.anon, 0, -1)) @@ -649,7 +652,7 @@ class HexViewMode(ViewMode): return True - else:#selif modifiers == QtCore.Qt.NoModifier: + else: # selif modifiers == QtCore.Qt.NoModifier: if key == QtCore.Qt.Key_Escape: self.selector.resetSelections() @@ -691,7 +694,7 @@ class HexViewMode(ViewMode): columns = self.HexColumns[self.idxHexColumns] if x > columns: - self.cursor.moveAbsolute(columns-1, y) + self.cursor.moveAbsolute(columns - 1, y) self.addop((self.draw,)) if self.isInEditMode(): @@ -720,10 +723,9 @@ class HexViewMode(ViewMode): for i in range(self.HexColumns[self.idxHexColumns]): s += '{0} '.format('{0:x}'.format(i).zfill(2)) - s += self.gap*' ' + 'Text' + s += self.gap * ' ' + 'Text' return s - def annotationWindow(self): w = self.ann_w.treeWidget @@ -733,18 +735,18 @@ class HexViewMode(ViewMode): self.ann_w.show() - @QtCore.pyqtSlot("QItemSelection, QItemSelection") def selectionChanged(self, selected, deselected): - item = self.ann_w.treeWidget.currentItem() + item = self.ann_w.treeWidget.currentItem() - if item: + if item: offset = item.getOffset() size = item.getSize() u = offset v = offset + size - self.selector.addSelection((u, v, QtGui.QBrush(QtGui.QColor(125, 255, 0)), 0.2), type=TextSelection.SelectionType.NORMAL) + self.selector.addSelection((u, v, QtGui.QBrush(QtGui.QColor(125, 255, 0)), 0.2), + type=TextSelection.SelectionType.NORMAL) self.goTo(u) @QtCore.pyqtSlot("QTreeWidgetItem*, int") @@ -753,7 +755,6 @@ class HexViewMode(ViewMode): ID_NAME = 0 ID_DESCRIPTION = 4 - s = str(item.text(column)) if column == ID_NAME: @@ -762,11 +763,11 @@ class HexViewMode(ViewMode): if column == ID_DESCRIPTION: item.setDescription(s) - def add_annotation(self, mode): - QtCore.QObject.connect(self.ann_w.treeWidget.selectionModel(), QtCore.SIGNAL('selectionChanged(QItemSelection, QItemSelection)'), self.selectionChanged) - QtCore.QObject.connect(self.ann_w.treeWidget, QtCore.SIGNAL('itemChanged(QTreeWidgetItem*, int)'), self.itemChanged) - + QtCore.QObject.connect(self.ann_w.treeWidget.selectionModel(), + QtCore.SIGNAL('selectionChanged(QItemSelection, QItemSelection)'), self.selectionChanged) + QtCore.QObject.connect(self.ann_w.treeWidget, QtCore.SIGNAL('itemChanged(QTreeWidgetItem*, int)'), + self.itemChanged) ID_NAME = 0 ID_OFFSET = 1 @@ -790,19 +791,20 @@ class HexViewMode(ViewMode): opacity = 0.25 qcolor = QtGui.QColor(r, g, b) - added = self.selector.addSelection((u, v, QtGui.QBrush(qcolor), opacity), type=TextSelection.SelectionType.PERMANENT) + added = self.selector.addSelection((u, v, QtGui.QBrush(qcolor), opacity), + type=TextSelection.SelectionType.PERMANENT) -# if not added: -# return + # if not added: + # return t = self.ann_w.treeWidget row = AnnonItem(None, self.ann_w.treeWidget, qcolor.name()) row.setFlags(QtCore.Qt.ItemIsSelectable | - QtCore.Qt.ItemIsEnabled | - QtCore.Qt.ItemIsEditable | - QtCore.Qt.ItemIsDropEnabled | - QtCore.Qt.ItemIsDragEnabled) + QtCore.Qt.ItemIsEnabled | + QtCore.Qt.ItemIsEditable | + QtCore.Qt.ItemIsDropEnabled | + QtCore.Qt.ItemIsDragEnabled) t.setAcceptDrops(True) t.setDragEnabled(True) @@ -814,14 +816,13 @@ class HexViewMode(ViewMode): t.setItemDelegateForColumn(3, delegate) t.setItemDelegateForColumn(5, delegate) - row.setName(self.ann_w.newFieldName()) row.setOffset(u) - #row.setText(ID_NAME, 'field_0') - #row.setText(ID_OFFSET, hex(u)) + # row.setText(ID_NAME, 'field_0') + # row.setText(ID_OFFSET, hex(u)) size = v - u - #row.setText(ID_SIZE, hex(size)) + # row.setText(ID_SIZE, hex(size)) row.setSize(size) value = '' @@ -834,11 +835,10 @@ class HexViewMode(ViewMode): else: value = repr(str(self.dataModel.getStream(u, v))) - - #row.setText(ID_VALUE, value) + # row.setText(ID_VALUE, value) row.setValue(value) - #cmb.setCurrentIndex(cmb.findData(w)) + # cmb.setCurrentIndex(cmb.findData(w)) if mode == 2: self.ann_w.treeWidget.addTopLevelItem(row) @@ -855,15 +855,16 @@ class HexViewMode(ViewMode): t.expandItem(row) - #cmb = QColorButton() - #cmb.setColor(qcolor.name()) - #self.ann_w.treeWidget.setItemWidget(row, ID_COLOR, cmb) + # cmb = QColorButton() + # cmb.setColor(qcolor.name()) + # self.ann_w.treeWidget.setItemWidget(row, ID_COLOR, cmb) self.ann_w.treeWidget.setItemWidget(row, ID_COLOR, row.cmb) - #self.ann_w.treeWidget.openPersistentEditor(row, 0) - #self.ann_w.treeWidget.editItem(row, 0) - #self.ann_w.treeWidget.editItem(row, 3) + # self.ann_w.treeWidget.openPersistentEditor(row, 0) + # self.ann_w.treeWidget.editItem(row, 0) + # self.ann_w.treeWidget.editItem(row, 3) + class NoEditDelegate(QtWidgets.QStyledItemDelegate): def __init__(self, parent=None): @@ -872,6 +873,7 @@ class NoEditDelegate(QtWidgets.QStyledItemDelegate): def createEditor(self, parent, option, index): return None + class AnnonItem(QtWidgets.QTreeWidgetItem): ID_NAME = 0 ID_OFFSET = 1 @@ -880,7 +882,6 @@ class AnnonItem(QtWidgets.QTreeWidgetItem): ID_DESCRIPTION = 4 ID_COLOR = 5 - def __init__(self, x, parent, color): super(AnnonItem, self).__init__(x) self._color = color @@ -889,9 +890,7 @@ class AnnonItem(QtWidgets.QTreeWidgetItem): self.cmb = QColorButton() self.cmb.setColor(self._color) - #self._t_parent.setItemWidget(self, self.ID_COLOR, self.cmb) - - + # self._t_parent.setItemWidget(self, self.ID_COLOR, self.cmb) def setName(self, name): self._name = name @@ -971,7 +970,7 @@ class QColorButton(QtWidgets.QPushButton): ''' dlg = QtGui.QColorDialog(QtGui.QColor(self._color), None) - #if self._color: + # if self._color: # dlg.setCurrentColor(QtGui.QColor(self._color)) if dlg.exec_(): @@ -983,6 +982,7 @@ class QColorButton(QtWidgets.QPushButton): return super(QColorButton, self).mousePressEvent(e) + class ComboBoxItem(QtWidgets.QComboBox): def __init__(self, item, column): super(ComboBoxItem, self).__init__() @@ -990,9 +990,10 @@ class ComboBoxItem(QtWidgets.QComboBox): self.item = item self.column = column -class Annotation(QtWidgets.QDialog): +class Annotation(QtWidgets.QDialog): _fieldIdx = 0 + def __init__(self, parent, view): super(Annotation, self).__init__(parent) @@ -1004,7 +1005,7 @@ class Annotation(QtWidgets.QDialog): root = os.path.dirname(sys.argv[0]) self.ui = loadUi(os.path.join(CONF['data_prefix'], 'annotation.ui'), baseinstance=self) -# self.ei = ImportsEventFilter(plugin, self.ui.treeWidgetImports) + # self.ei = ImportsEventFilter(plugin, self.ui.treeWidgetImports) self.ei = treeEventFilter(view, self.ui.treeWidget) self.ui.treeWidget.installEventFilter(self.ei) @@ -1015,15 +1016,14 @@ class Annotation(QtWidgets.QDialog): name = 'field_{}'.format(self._fieldIdx) self._fieldIdx += 1 return name - - def show(self): + def show(self): # TODO: remember position? resize plugin windows when parent resize? pwidth = self.parent.parent.size().width() pheight = self.parent.parent.size().height() - width = self.ui.treeWidget.size().width()+15 - height = self.ui.treeWidget.size().height()+15 + width = self.ui.treeWidget.size().width() + 15 + height = self.ui.treeWidget.size().height() + 15 self.setGeometry(pwidth - width - 15, pheight - height, width, height) self.setFixedSize(width, height) @@ -1031,12 +1031,12 @@ class Annotation(QtWidgets.QDialog): self.oshow() def initUI(self): - self.setWindowTitle('Annotations') self.setSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) shortcut = QtWidgets.QShortcut(QtGui.QKeySequence("Shift+/"), self, self.close, self.close) + class treeEventFilter(QtCore.QObject): def __init__(self, view, widget): super(QtCore.QObject, self).__init__() @@ -1046,13 +1046,12 @@ class treeEventFilter(QtCore.QObject): def eventFilter(self, watched, event): if event.type() == QtCore.QEvent.KeyPress: if event.key() == QtCore.Qt.Key_Delete: - # get RVA column from treeView item = self.widget.currentItem() - offset = item.getOffset()#int(str(item.text(1)),0) - size = item.getSize()#int(str(item.text(2)),0) + offset = item.getOffset() # int(str(item.text(1)),0) + size = item.getSize() # int(str(item.text(2)),0) u = offset v = offset + size @@ -1060,8 +1059,8 @@ class treeEventFilter(QtCore.QObject): # TODO: remove tree! item.parent().removeChild(item) - #self.widget.takeTopLevelItem(self.widget.indexOfTopLevelItem(item)) - #print item - #rva = self.widget.indexFromItem(item, 1).data().toString() + # self.widget.takeTopLevelItem(self.widget.indexOfTopLevelItem(item)) + # print item + # rva = self.widget.indexFromItem(item, 1).data().toString() return False diff --git a/androguard/gui/SourceViewMode.py b/androguard/gui/SourceViewMode.py index 5d17b2b2..03e45995 100644 --- a/androguard/gui/SourceViewMode.py +++ b/androguard/gui/SourceViewMode.py @@ -7,6 +7,7 @@ from . import TextSelection from PyQt5 import QtGui, QtCore + class SourceViewMode(ViewMode): def __init__(self, themes, width, height, data, cursor, widget=None): super(SourceViewMode, self).__init__() @@ -34,7 +35,7 @@ class SourceViewMode(ViewMode): self.font.setKerning(False) self.font.setFixedPitch(True) fm = QtGui.QFontMetrics(self.font) - self._fontWidth = fm.width('a') + self._fontWidth = fm.width('a') self._fontHeight = fm.height() self.textPen = QtGui.QPen(self.themes['pen'], 0, QtCore.Qt.SolidLine) @@ -63,15 +64,15 @@ class SourceViewMode(ViewMode): return QtGui.QPixmap(width, height) def resize(self, width, height): - self.width = width - width%self.fontWidth - self.height = height - height%self.fontHeight + self.width = width - width % self.fontWidth + self.height = height - height % self.fontHeight self.computeTextArea() self.qpix = self._getNewPixmap(self.width, self.height + self.SPACER) self.refresh = True def computeTextArea(self): self.COLUMNS = self.width // self.fontWidth - self.ROWS = self.height // self.fontHeight + self.ROWS = self.height // self.fontHeight self.notify(self.ROWS, self.COLUMNS) def getPixmap(self): @@ -83,7 +84,7 @@ class SourceViewMode(ViewMode): t[0](*t[1:]) self.Ops = [] - + if not self.newPix: self.draw() @@ -102,7 +103,7 @@ class SourceViewMode(ViewMode): if self.dataModel.getOffset() in self.Paints: self.refresh = False self.qpix = QtGui.QPixmap(self.Paints[self.dataModel.getOffset()]) - #print 'hit' + # print 'hit' self.drawAdditionals() return @@ -119,11 +120,11 @@ class SourceViewMode(ViewMode): self.newPix = self._getNewPixmap(self.width, self.height + self.SPACER) qp = QtGui.QPainter() qp.begin(self.newPix) - qp.setWindow(-50, 0, self.COLUMNS * self.fontWidth, self.ROWS * self.fontHeight) + qp.setWindow(-50, 0, self.COLUMNS * self.fontWidth, self.ROWS * self.fontHeight) qp.drawPixmap(0, 0, self.qpix) - #self.transformationEngine.decorateText() + # self.transformationEngine.decorateText() # highlight selected text self.selector.highlightText() @@ -138,19 +139,19 @@ class SourceViewMode(ViewMode): qp.end() def drawLine(self, qp): - qp.fillRect(-50, 0, 50, self.ROWS * self.fontHeight, self.backgroundBrush) + qp.fillRect(-50, 0, 50, self.ROWS * self.fontHeight, self.backgroundBrush) def drawTextMode(self, qp): # draw background - qp.fillRect(0, 0, self.COLUMNS * self.fontWidth, self.ROWS * self.fontHeight, self.backgroundBrush) + qp.fillRect(0, 0, self.COLUMNS * self.fontWidth, self.ROWS * self.fontHeight, self.backgroundBrush) # set text pen&font qp.setFont(self.font) qp.setPen(self.textPen) - + cemu = ConsoleEmulator(qp, self.ROWS, self.COLUMNS) - #ast = self.dataModel.current_class.get_ast() - #print ast + # ast = self.dataModel.current_class.get_ast() + # print ast for i in range(self.ROWS): if i < len(self.LINES): @@ -173,7 +174,7 @@ class SourceViewMode(ViewMode): qp.setBrush(QtGui.QColor(255, 255, 0)) qp.setOpacity(0.5) - qp.drawRect(xstart*self.fontWidth, cursorY*self.fontHeight, width*self.fontWidth, self.fontHeight + 2) + qp.drawRect(xstart * self.fontWidth, cursorY * self.fontHeight, width * self.fontWidth, self.fontHeight + 2) qp.setOpacity(1) def handleKeyEvent(self, modifiers, key, event=None): diff --git a/androguard/gui/TextDecorators.py b/androguard/gui/TextDecorators.py index 2ab77bef..66f31fdc 100644 --- a/androguard/gui/TextDecorators.py +++ b/androguard/gui/TextDecorators.py @@ -15,7 +15,7 @@ class CTextDecorator(object): greenPen = QtGui.QPen(QtGui.QColor(255, 255, 0)) whitePen = QtGui.QPen(QtGui.QColor(255, 255, 255)) - normalPen = QtGui.QPen(QtGui.QColor(192, 192, 192), 1, QtCore.Qt.SolidLine) + normalPen = QtGui.QPen(QtGui.QColor(192, 192, 192), 1, QtCore.Qt.SolidLine) MZbrush = QtGui.QBrush(QtGui.QColor(128, 0, 0)) grayBrush = QtGui.QBrush(QtGui.QColor(128, 128, 128)) @@ -23,6 +23,7 @@ class CTextDecorator(object): def __init__(self): pass + class TextDecorator(CTextDecorator): def __init__(self, viewmode): self.operations = [] @@ -35,27 +36,37 @@ class TextDecorator(CTextDecorator): self.normalPen = QtGui.QPen(QtGui.QColor(192, 192, 192), 1, QtCore.Qt.SolidLine) # if we want to generate T/F table - self.Special = string.ascii_letters + string.digits + ' .;\':;=\"?-!()/\\_' - self.Special = [False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, - False, False, False, False, False, False, False, False, False, False, False, False, True, True, True, False, False, False, False, True, True, - True, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, True, False, True, - False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, - True, True, True, False, True, False, False, True, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, - True, True, True, True, True, True, True, True, True, True, True, False, False, False, False, False, False, False, False, False, False, False, - False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, - False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, - False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, - False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, - False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, - False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False] - + self.Special = string.ascii_letters + string.digits + ' .;\':;=\"?-!()/\\_' + self.Special = [False, False, False, False, False, False, False, False, False, False, False, False, False, + False, False, False, False, False, False, False, + False, False, False, False, False, False, False, False, False, False, False, False, True, True, + True, False, False, False, False, True, True, + True, False, False, False, True, True, True, True, True, True, True, True, True, True, True, + True, True, True, True, False, True, False, True, + False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, + True, True, True, True, True, True, True, True, + True, True, True, False, True, False, False, True, False, True, True, True, True, True, True, + True, True, True, True, True, True, True, True, True, + True, True, True, True, True, True, True, True, True, True, True, False, False, False, False, + False, False, False, False, False, False, False, + False, False, False, False, False, False, False, False, False, False, False, False, False, + False, False, False, False, False, False, False, False, + False, False, False, False, False, False, False, False, False, False, False, False, False, + False, False, False, False, False, False, False, False, + False, False, False, False, False, False, False, False, False, False, False, False, False, + False, False, False, False, False, False, False, False, + False, False, False, False, False, False, False, False, False, False, False, False, False, + False, False, False, False, False, False, False, False, + False, False, False, False, False, False, False, False, False, False, False, False, False, + False, False, False, False, False, False, False, False, + False, False, False, False, False, False, False, False, False, False, False, False, False, + False, False, False, False] def reset(self): self.penMap = {} self.brushMap = {} self.PenInterval = [] - def getDataModel(self): return self.dataModel @@ -76,7 +87,7 @@ class TextDecorator(CTextDecorator): return self.Special[ord(c)] def getChar(self, idx): - #self.page = self.getDataModel().getDisplayablePage() + # self.page = self.getDataModel().getDisplayablePage() if idx < len(self.page): @@ -84,24 +95,21 @@ class TextDecorator(CTextDecorator): return 0 - def decorate(self, pageOffset=None): - + if pageOffset: self.page = self.viewmode.getDisplayablePage(pageOffset=pageOffset) - else: + else: self.page = self.viewmode.getDisplayablePage() return self.page - - def addPenInterval(self, a, b, pen, ignoreHighlights=True): self.PenInterval.append((a, b, pen, ignoreHighlights)) def choosePen(self, idx): key = self.dataModel.getOffset() + idx - + # if we do have a pen with that index, return it if it's different than default pen # otherwise, return the pen that was set in that interval # the priority here is de pen from other transformations, than interval pen @@ -136,7 +144,6 @@ class PageDecorator(TextDecorator): def __init__(self, decorated): pass - def reset(self): self.decorated.reset() @@ -156,6 +163,7 @@ class PageDecorator(TextDecorator): def getDataModel(self): return self.dataModel + class HighlightASCII(PageDecorator): def __init__(self, decorated): self.dataModel = decorated.getDataModel() @@ -164,8 +172,6 @@ class HighlightASCII(PageDecorator): super(HighlightASCII, self).__init__(decorated) self.dataModel = super(HighlightASCII, self).getDataModel() - - def decorate(self, pageOffset=None): page = self.decorated.decorate(pageOffset) @@ -177,16 +183,13 @@ class HighlightASCII(PageDecorator): Match = [(m.start(), m.end()) for m in re.finditer(b'([a-zA-Z0-9\\-\\\\.%*:/? _<>]){4,}', page)] for s, e in Match: - for i in range(e-s): + for i in range(e - s): idx = off + s + i if idx not in self.penMap: self.penMap[off + s + i] = self.redPen - self.page = page return self.page - - class HighlightPrefix(PageDecorator): @@ -207,15 +210,11 @@ class HighlightPrefix(PageDecorator): self.brushMap = self.decorated.brushMap self.penMap = self.decorated.penMap - self.page = self.highliteWithPrefix(page, self.text, self.additionalLength, self.brush, self.pen) return self.page - def highliteWithPrefix(self, page, text, additionalLength=0, brush=None, pen=None): - - # todo: nu am gasit o metoda mai eleganta pentru a selecta toate aparitiile ale lui text # regexp nu merg, "bad re expression" lenText = len(text) @@ -231,17 +230,16 @@ class HighlightPrefix(PageDecorator): M.append((idx, lenText + additionalLength)) idx += lenText + additionalLength - off = self.dataModel.getOffset() for start, length in M: - + for i in range(length): self.penMap[off + start + i] = pen self.brushMap[off + start + i] = brush - return page + class HighlightWideChar(PageDecorator): def __init__(self, decorated): super(HighlightWideChar, self).__init__(decorated) @@ -249,7 +247,6 @@ class HighlightWideChar(PageDecorator): self.dataModel = decorated.getDataModel() self.decorated = decorated - def decorate(self, pageOffset=None): self.page = self.decorated.decorate(pageOffset) @@ -257,28 +254,24 @@ class HighlightWideChar(PageDecorator): self.brushMap = self.decorated.brushMap self.penMap = self.decorated.penMap - self.page = self.highliteWidechar2(self.page) return self.page - - - def highliteWidechar2(self, page): - + pageStart = self.dataModel.getOffset() - pageEnd = pageStart + len(page) + pageEnd = pageStart + len(page) touched = False - #for s, e in self.Intervals: + # for s, e in self.Intervals: # touched = True if not touched: # expand Match = [(m.start(), m.end()) for m in re.finditer(r'([a-zA-Z0-9\-\\.%*:/? ]\x00){4,}', page)] for s, e in Match: - for i in range(e-s): - #print i + for i in range(e - s): + # print i self.penMap[pageStart + s + i] = QtGui.QPen(QtGui.QColor(255, 255, 0)) # get rid of '\x00' @@ -287,12 +280,10 @@ class HighlightWideChar(PageDecorator): # copy string that has no zeros page[s:s + l] = string # fill with zeros the remaining space - page[s + l: s + 2*l] = '\x00'*l - + page[s + l: s + 2 * l] = '\x00' * l return page - ### todo: other way to highlight widechar, should test and see which one is faster """ def _changeText(self, page, page_start, I): diff --git a/androguard/gui/TextSelection.py b/androguard/gui/TextSelection.py index 643a2dad..f8767f9f 100644 --- a/androguard/gui/TextSelection.py +++ b/androguard/gui/TextSelection.py @@ -7,11 +7,13 @@ from __future__ import division from builtins import object from PyQt5 import QtGui + class SelectionType(object): NORMAL = 0 PERMANENT = 1 TEXTHIGHLIGHT = 2 + class Selection(object): def __init__(self, themes, viewMode): self.themes = themes @@ -48,7 +50,6 @@ class Selection(object): if type == SelectionType.NORMAL: if len(self.Selections) >= self.MAX_SELECTIONS: - self.Selections = [] self.Selections.append(t) @@ -99,7 +100,7 @@ class Selection(object): self.drawSelection(qp, start, end) self.HighlightSelections = [] - #draw current + # draw current if self.selecting: self.drawSelection(qp, *self.getCurrentSelection()) @@ -129,16 +130,16 @@ class Selection(object): # but currently, by design we could only have one NORMAL selection return u, v - #if self.last: - # return self.last + # if self.last: + # return self.last return None - + def stopSelection(self): if self.selecting == True: u, v = self.getCurrentSelection() - self.addSelection((u, v, QtGui.QBrush(self.themes['selection']), 0.4) , type=SelectionType.NORMAL) + self.addSelection((u, v, QtGui.QBrush(self.themes['selection']), 0.4), type=SelectionType.NORMAL) self.last = u, v self.selecting = False @@ -154,7 +155,7 @@ class Selection(object): if not t: # no selection return - + start, end = t if start == end: @@ -163,7 +164,6 @@ class Selection(object): text = dataModel.getStream(start, end) Exclude = [start] - cols, rows = self.viewMode.getGeometry() # find all occurrence @@ -179,17 +179,17 @@ class Selection(object): M.append((idx, lenText)) idx += lenText - - #Match = [(m.start(), m.end()) for m in re.finditer(bytes(text), bytes(page))] - + # Match = [(m.start(), m.end()) for m in re.finditer(bytes(text), bytes(page))] + for start, end in M: - #print start, end - #self._makeSelection(qp, start, end, cols, rows) + # print start, end + # self._makeSelection(qp, start, end, cols, rows) off = dataModel.getOffset() - if off+start not in Exclude: - #self._makeSelection(off + start, off + start + end, brush=QtGui.QBrush(QtGui.QColor(125, 255, 0))) - #self.viewMode.selector.addSelection((off+start, off + start + end, QtGui.QBrush(QtGui.QColor(125, 255, 0)), 0.4)) - self.addSelection((off+start, off + start + end, QtGui.QBrush(self.themes['selection']), 0.4), type=SelectionType.TEXTHIGHLIGHT) + if off + start not in Exclude: + # self._makeSelection(off + start, off + start + end, brush=QtGui.QBrush(QtGui.QColor(125, 255, 0))) + # self.viewMode.selector.addSelection((off+start, off + start + end, QtGui.QBrush(QtGui.QColor(125, 255, 0)), 0.4)) + self.addSelection((off + start, off + start + end, QtGui.QBrush(self.themes['selection']), 0.4), + type=SelectionType.TEXTHIGHLIGHT) class DefaultSelection(Selection): @@ -221,18 +221,18 @@ class DefaultSelection(Selection): d1 = length else: d1 = end - off - + mark = True height = 14 qp.setOpacity(0.4) while mark: if d0 // cols == d1 // cols: - qp.fillRect((d0%cols)*8, (d0 // cols) * height, (d1-d0) * 8, 1 * height, brush) + qp.fillRect((d0 % cols) * 8, (d0 // cols) * height, (d1 - d0) * 8, 1 * height, brush) d0 += (d1 - d0) - else: - qp.fillRect((d0%cols)*8, (d0 // cols)*height, (cols - d0%cols)*8, 1*height, brush) - d0 += (cols - d0%cols) + else: + qp.fillRect((d0 % cols) * 8, (d0 // cols) * height, (cols - d0 % cols) * 8, 1 * height, brush) + d0 += (cols - d0 % cols) if (d1 - d0 <= 0): mark = False @@ -263,7 +263,7 @@ class DefaultSelection(Selection): d1 = length else: d1 = end - off - + mark = True height = self.viewMode.fontHeight width = self.viewMode.fontWidth @@ -274,18 +274,18 @@ class DefaultSelection(Selection): while mark: if d0 // cols == d1 // cols: - qp.fillRect((d0%cols)*width, (d0 // cols)*height + offset, (d1-d0)*width, 1*height, brush) + qp.fillRect((d0 % cols) * width, (d0 // cols) * height + offset, (d1 - d0) * width, 1 * height, brush) d0 += (d1 - d0) - else: - qp.fillRect((d0%cols)*width, (d0 // cols)*height + offset, (cols - d0%cols)*width, 1*height, brush) - d0 += (cols - d0%cols) + else: + qp.fillRect((d0 % cols) * width, (d0 // cols) * height + offset, (cols - d0 % cols) * width, 1 * height, + brush) + d0 += (cols - d0 % cols) if (d1 - d0 <= 0): mark = False qp.setOpacity(1) - class HexSelection(Selection): def __init__(self, themes, viewMode): super(HexSelection, self).__init__(themes, viewMode) @@ -316,7 +316,7 @@ class HexSelection(Selection): d1 = length else: d1 = end - off - + mark = True height = self.viewMode.fontHeight width = self.viewMode.fontWidth @@ -325,15 +325,19 @@ class HexSelection(Selection): while mark: if d0 // cols == d1 // cols: # +2 is an offset for letters - qp.fillRect(3*(d0%cols)*width, (d0 // cols)*height+2, 3*(d1-d0)*width - width, 1*height, brush) - qp.fillRect(3*cols*width + self.viewMode.gap*width + (d0%cols)*width, (d0 // cols)*height+2, (d1-d0)*width, 1*height, brush) + qp.fillRect(3 * (d0 % cols) * width, (d0 // cols) * height + 2, 3 * (d1 - d0) * width - width, + 1 * height, brush) + qp.fillRect(3 * cols * width + self.viewMode.gap * width + (d0 % cols) * width, + (d0 // cols) * height + 2, (d1 - d0) * width, 1 * height, brush) d0 += (d1 - d0) - else: - qp.fillRect(3*(d0%cols)*width, (d0 // cols)*height+2, 3*(cols - d0%cols)*width - width, 1*height, brush) - qp.fillRect(3*cols*width + self.viewMode.gap*width + (d0%cols)*width, (d0 // cols)*height+2, (cols - d0%cols)*width, 1*height, brush) + else: + qp.fillRect(3 * (d0 % cols) * width, (d0 // cols) * height + 2, 3 * (cols - d0 % cols) * width - width, + 1 * height, brush) + qp.fillRect(3 * cols * width + self.viewMode.gap * width + (d0 % cols) * width, + (d0 // cols) * height + 2, (cols - d0 % cols) * width, 1 * height, brush) - d0 += (cols - d0%cols) + d0 += (cols - d0 % cols) if (d1 - d0 <= 0): mark = False @@ -351,7 +355,7 @@ class DisasmSelection(Selection): dataModel = self.viewMode.getDataModel() off = dataModel.getOffset() - length = sum([o.size for o in self.viewMode.OPCODES]) # TODO: not nice! + length = sum([o.size for o in self.viewMode.OPCODES]) # TODO: not nice! cols, rows = self.viewMode.getGeometry() # return if out of view @@ -370,7 +374,7 @@ class DisasmSelection(Selection): d1 = length else: d1 = end - off - + mark = True height = self.viewMode.fontHeight width = self.viewMode.fontWidth @@ -383,17 +387,17 @@ class DisasmSelection(Selection): for i, asm in enumerate(self.viewMode.OPCODES): if size + asm.size > d0 and size <= d1: - # compute x offset - x = d0-size - if size > d0: - x = 0 + # compute x offset + x = d0 - size + if size > d0: + x = 0 - # compute width - w = asm.size - if size + asm.size > d1: - w = d1 - size + # compute width + w = asm.size + if size + asm.size > d1: + w = d1 - size - qp.fillRect(x*3*width, i*height + offset, (w-x)*3*width - width, 1*height, brush) + qp.fillRect(x * 3 * width, i * height + offset, (w - x) * 3 * width - width, 1 * height, brush) size += asm.size diff --git a/androguard/gui/ViewMode.py b/androguard/gui/ViewMode.py index 4dee3ab0..c37c05a6 100644 --- a/androguard/gui/ViewMode.py +++ b/androguard/gui/ViewMode.py @@ -1,5 +1,7 @@ from builtins import chr from builtins import object + + class Observable(object): def __init__(self): self.Callbacks = [] @@ -12,8 +14,8 @@ class Observable(object): for cbk in self.Callbacks: cbk.update_geometry(rows, cols) -class ViewMode(Observable, object): +class ViewMode(Observable, object): SPACER = 4 def __init__(self): @@ -26,37 +28,37 @@ class ViewMode(Observable, object): http://svn.openmoko.org/trunk/src/host/qemu-neo1973/phonesim/lib/serial/qatutils.cpp """ cp437ToUnicode = [0x0020, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, - 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, - 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, - 0x0018, 0x0019, 0x001c, 0x001b, 0x007f, 0x001d, 0x001e, 0x001f, - 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, - 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, - 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, - 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, - 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, - 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, - 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, - 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, - 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, - 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, - 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, - 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x001a, - 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, - 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, - 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, - 0x00ff, 0x00d6, 0x00dc, 0x00a2, 0x00a3, 0x00a5, 0x20a7, 0x0192, - 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, - 0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, - 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, - 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, - 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, - 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, - 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, - 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, - 0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x03bc, 0x03c4, - 0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229, - 0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, - 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0] + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001c, 0x001b, 0x007f, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x001a, + 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, + 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, + 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, + 0x00ff, 0x00d6, 0x00dc, 0x00a2, 0x00a3, 0x00a5, 0x20a7, 0x0192, + 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, + 0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, + 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, + 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, + 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, + 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, + 0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x03bc, 0x03c4, + 0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229, + 0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, + 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0] def cp437(self, c): return chr(self.cp437ToUnicode[c]) @@ -69,10 +71,10 @@ class ViewMode(Observable, object): NotImplementedError('method not implemented.') def startSelection(self): - NotImplementedError('method not implemented.') + NotImplementedError('method not implemented.') def stopSelection(self): - NotImplementedError('method not implemented.') + NotImplementedError('method not implemented.') def draw(self, refresh=False): NotImplementedError('method not implemented.') @@ -80,8 +82,8 @@ class ViewMode(Observable, object): # returns x,y cursor position in page def getCursorOffsetInPage(self): x, y = self.cursor.getPosition() - return y*self.COLUMNS + x - + return y * self.COLUMNS + x + def handleKeyPressEvent(self, modifier, key): raise Exception("not implemented") @@ -97,9 +99,9 @@ class ViewMode(Observable, object): dataOffset = self.dataModel.getOffset() cols, rows = self.getGeometry() if pageOffset: - return bytearray(data[dataOffset:dataOffset + rows*cols*pageOffset]) + return bytearray(data[dataOffset:dataOffset + rows * cols * pageOffset]) - return bytearray(data[dataOffset:dataOffset + rows*cols]) + return bytearray(data[dataOffset:dataOffset + rows * cols]) # moves cursor to offset in page, or moves to page def goTo(self, offset): @@ -116,8 +118,7 @@ class ViewMode(Observable, object): self.cursor.moveAbsolute(0, 0) self.draw(refresh=True) - - #self.draw(refresh=False) + # self.draw(refresh=False) if self.widget: self.widget.update() diff --git a/androguard/gui/annotation.ui b/androguard/gui/annotation.ui index 8d89e90d..1527d875 100644 --- a/androguard/gui/annotation.ui +++ b/androguard/gui/annotation.ui @@ -1,85 +1,85 @@ - Form - - - - 0 - 0 - 708 - 513 - - - - Form - - - - - 10 - 10 - 691 - 461 - - - - - Name - - - - - Offset - - - - - Size - - - - - Value - - - - - Description - - - - - Color - - - - - - - 610 - 480 - 93 - 28 - - - - Load - - - - - - 510 - 480 - 93 - 28 - - - - Save - - - - - + Form + + + + 0 + 0 + 708 + 513 + + + + Form + + + + + 10 + 10 + 691 + 461 + + + + + Name + + + + + Offset + + + + + Size + + + + + Value + + + + + Description + + + + + Color + + + + + + + 610 + 480 + 93 + 28 + + + + Load + + + + + + 510 + 480 + 93 + 28 + + + + Save + + + + + diff --git a/androguard/gui/apiwindow.py b/androguard/gui/apiwindow.py index f04b6dfc..f2d5f1e6 100644 --- a/androguard/gui/apiwindow.py +++ b/androguard/gui/apiwindow.py @@ -3,7 +3,6 @@ from androguard.gui.xrefwindow import XrefDialogMethod class APIWindow(QtWidgets.QWidget): - def __init__(self, parent=None, win=None, session=None): super(APIWindow, self).__init__(parent) self.mainwin = win @@ -30,7 +29,6 @@ class APIWindow(QtWidgets.QWidget): class APIValueWindow(QtWidgets.QTreeView): - def __init__(self, parent=None, win=None, session=None): super(APIValueWindow, self).__init__(parent) self.mainwin = win @@ -68,7 +66,7 @@ class APIValueWindow(QtWidgets.QTreeView): self.model.setData(self.model.index( row, 3, QtCore.QModelIndex()), digest) self.reverse_methods[method.get_name() + method.get_class_name() + method.get_descriptor() - ] = dx.get_method_analysis(method) + ] = dx.get_method_analysis(method) row += 1 self.proxyModel.setSourceModel(self.model) @@ -91,6 +89,6 @@ class APIValueWindow(QtWidgets.QTreeView): parent=self.mainwin, win=self.mainwin, method_analysis=self.reverse_methods[self.model.item(row).text() + - self.model.item(row, 1).text() + + self.model.item(row, 1).text() + self.model.item(row, 2).text()]) xwin.show() diff --git a/androguard/gui/binwindow.py b/androguard/gui/binwindow.py index ecf75e9f..ee6ec40f 100644 --- a/androguard/gui/binwindow.py +++ b/androguard/gui/binwindow.py @@ -15,8 +15,8 @@ from .BinViewMode import * from .DataModel import * from .Banners import * + class SearchWindow(QtWidgets.QDialog): - def __init__(self, parent, plugin, searchable): super(SearchWindow, self).__init__(parent) self.searchable = searchable @@ -35,8 +35,8 @@ class SearchWindow(QtWidgets.QDialog): def show(self): # TODO: remember position? resize plugin windows when parent resize? - width = self.ui.size().width()+15 - height = self.ui.size().height()+15 + width = self.ui.size().width() + 15 + height = self.ui.size().height() + 15 self.move((self.parent.width() - width) // 2, (self.parent.height() - height) // 2) self.ui.lineEdit.setText(self._lastText) @@ -51,12 +51,12 @@ class SearchWindow(QtWidgets.QDialog): self.ui.pushButton.clicked.connect(self.onClicked) - width = self.ui.size().width()+15 - height = self.ui.size().height()+15 + width = self.ui.size().width() + 15 + height = self.ui.size().height() + 15 self.setFixedSize(width, height) def onClicked(self): - text = self.ui.lineEdit.text() + text = self.ui.lineEdit.text() text = str(text) hexstr = '0123456789abcdefABCDEF' @@ -66,7 +66,8 @@ class SearchWindow(QtWidgets.QDialog): text = '' for t in T: if len(t) != 2: - reply = QtWidgets.QMessageBox.warning(self, 'Qiew', "Hex string with errors.", QtWidgets.QMessageBox.Ok) + reply = QtWidgets.QMessageBox.warning(self, 'Qiew', "Hex string with errors.", + QtWidgets.QMessageBox.Ok) self.close() return @@ -74,11 +75,11 @@ class SearchWindow(QtWidgets.QDialog): o = int(t, 16) text += chr(o) else: - reply = QtWidgets.QMessageBox.warning(self, 'Qiew', "Hex string with errors.", QtWidgets.QMessageBox.Ok) + reply = QtWidgets.QMessageBox.warning(self, 'Qiew', "Hex string with errors.", + QtWidgets.QMessageBox.Ok) self.close() return - self._lastText = oldtext else: @@ -94,6 +95,7 @@ class SearchWindow(QtWidgets.QDialog): self.parent.viewMode.draw(refresh=True) self.close() + class Observable(object): def __init__(self): self.Callbacks = [] @@ -111,6 +113,7 @@ class Observer(object): def changeViewMode(self, viewMode): self._viewMode = viewMode + class Searchable(Observer): def __init__(self, dataModel, viewMode): self._viewMode = viewMode @@ -126,14 +129,14 @@ class Searchable(Observer): idx = self._lastIdx + 1 else: idx = start - + if idx > -1: self._search(data, text, idx) @property def lastText(self): return self._lastText - + def previous(self, start=None): data = self._dataModel.getData() text = self._lastText @@ -183,32 +186,31 @@ class Searchable(Observer): self._lastIdx = idx if idx > -1: - self._viewMode.selector.addSelection((idx, idx + len(text), QtGui.QBrush(QtGui.QColor(125, 0, 100)), 0.8) , type=TextSelection.SelectionType.NORMAL) + self._viewMode.selector.addSelection((idx, idx + len(text), QtGui.QBrush(QtGui.QColor(125, 0, 100)), 0.8), + type=TextSelection.SelectionType.NORMAL) self._viewMode.goTo(idx) return idx - def search(self, text): data = self._dataModel.getData() return self._search(data, text, 0) class binWidget(QtWidgets.QWidget, Observable): - scrolled = QtCore.pyqtSignal(int, name='scroll') def __init__(self, parent, source, title): super(binWidget, self).__init__() Observable.__init__(self) self.parent = parent - + self.title = title self.active = False # offset for text window - #self.data = mapped + # self.data = mapped self.dataOffset = 0 - + self.dataModel = source self.cursor = Cursor(0, 0) @@ -218,7 +220,7 @@ class binWidget(QtWidgets.QWidget, Observable): 'background_cursor': QtGui.QColor(255, 255, 0), 'selection': QtGui.QColor(125, 255, 0), 'pen': QtGui.QColor(0xb5, 0x89, 0x00) - } + } self.multipleViewModes = [] for view_mode in self.dataModel.GetViews(): @@ -231,11 +233,9 @@ class binWidget(QtWidgets.QWidget, Observable): self.viewMode = self.multipleViewModes[0] - - self.Banners = Banners() - self.Banners.add(FileAddrBanner(self.themes, self.dataModel, self.viewMode)) + self.Banners.add(FileAddrBanner(self.themes, self.dataModel, self.viewMode)) self.Banners.add(TopBanner(self.themes, self.dataModel, self.viewMode)) self.Banners.add(BottomBanner(self.themes, self.dataModel, self.viewMode)) @@ -243,7 +243,6 @@ class binWidget(QtWidgets.QWidget, Observable): self.offsetWindow_v = 0 self.searchable = Searchable(self.dataModel, self.viewMode) - self.initUI() self.searchWindow = SearchWindow(self, None, self.searchable) @@ -251,17 +250,17 @@ class binWidget(QtWidgets.QWidget, Observable): self.addHandler(self.searchable) self.addHandler(self.Banners) - self.notify(self.viewMode) + self.notify(self.viewMode) def enable(self): self.active = True def disable(self): self.active = False - + def scroll_from_outside(self, i): - #print 'slot-signal ' + str(i) - #self.scroll_pdown = True + # print 'slot-signal ' + str(i) + # self.scroll_pdown = True self.update() def initUI(self): @@ -284,8 +283,8 @@ class binWidget(QtWidgets.QWidget, Observable): # compute space ocupated by banners offsetLeft = self.offsetWindow_h + self.Banners.getLeftOffset() - offsetBottom = self.offsetWindow_v + self.Banners.getBottomOffset() + self.Banners.getTopOffset() - + offsetBottom = self.offsetWindow_v + self.Banners.getBottomOffset() + self.Banners.getTopOffset() + # resize window, substract space ocupated by banners self.viewMode.resize(self.size().width() - offsetLeft, self.size().height() - offsetBottom) @@ -293,28 +292,26 @@ class binWidget(QtWidgets.QWidget, Observable): def resizeEvent(self, e): self._resize() - def paintEvent(self, e): qp = QtGui.QPainter() qp.begin(self) qp.setOpacity(1) offsetLeft = self.offsetWindow_h + self.Banners.getLeftOffset() - offsetBottom = self.offsetWindow_v + self.Banners.getTopOffset() + offsetBottom = self.offsetWindow_v + self.Banners.getTopOffset() - #self.viewMode.draw2(qp, refresh=True) - #start = time() + # self.viewMode.draw2(qp, refresh=True) + # start = time() qp.drawPixmap(offsetLeft, offsetBottom, self.viewMode.getPixmap()) - #print 'Draw ' + str(time() - start) + # print 'Draw ' + str(time() - start) self.Banners.draw(qp, self.offsetWindow_h, self.offsetWindow_v, self.size().height()) - # qp.drawPixmap(self.offsetWindow_h, self.size().height() - 50, self.banner.getPixmap()) + # qp.drawPixmap(self.offsetWindow_h, self.size().height() - 50, self.banner.getPixmap()) - # qp.drawPixmap(20, 0, self.filebanner.getPixmap()) + # qp.drawPixmap(20, 0, self.filebanner.getPixmap()) qp.end() - def eventFilter(self, watched, event): if not self.active: return False @@ -325,9 +322,8 @@ class binWidget(QtWidgets.QWidget, Observable): if self.viewMode.handleKeyEvent(modifiers, key, event=event): self.update() - - if event.type() == QtCore.QEvent.KeyPress: - #TODO: should we accept only certain keys ? + if event.type() == QtCore.QEvent.KeyPress: + # TODO: should we accept only certain keys ? key = event.key() modifiers = event.modifiers() if key == QtCore.Qt.Key_F2: @@ -358,46 +354,44 @@ class binWidget(QtWidgets.QWidget, Observable): if self.viewMode.selector.getCurrentSelection(): a, b = self.viewMode.selector.getCurrentSelection() - #print a, b + # print a, b hx = '' for s in self.dataModel.getStream(a, b): hx += '{:02x}'.format(s) pyperclip.copy(hx) del pyperclip - #print pyperclip.paste() - # print 'coppied' - + # print pyperclip.paste() + # print 'coppied' + if event.modifiers() & QtCore.Qt.ShiftModifier: if key == QtCore.Qt.Key_Insert: import re hx = pyperclip.paste() - #print hx + # print hx L = re.findall(r'.{1,2}', hx, re.DOTALL) array = '' for s in L: array += chr(int(s, 16)) - #print 'write ' - #print 'write' - #print array + # print 'write ' + # print 'write' + # print array self.dataModel.write(0, array) self.viewMode.draw(True) del pyperclip - #print array + # print array if key == QtCore.Qt.Key_F4: self.unp = WUnpack(self, None) self.unp.show() - if key == QtCore.Qt.Key_F10: self.dataModel.flush() self.w = WHeaders(self, None) self.w.show() - if not self.viewMode.isInEditMode(): if key == QtCore.Qt.Key_Slash: self.searchWindow.show() @@ -414,7 +408,6 @@ class binWidget(QtWidgets.QWidget, Observable): self.update() return True - return False def setTextViewport(self, qp): diff --git a/androguard/gui/cemu.py b/androguard/gui/cemu.py index 9cbfc6ba..fd70f899 100644 --- a/androguard/gui/cemu.py +++ b/androguard/gui/cemu.py @@ -3,11 +3,12 @@ from PyQt5 import QtGui from androguard.core import androconf + class Cursor(object): def __init__(self, x, y): self.x = x self.y = y - + def move(self, dx, dy): self.x += dx self.y += dy @@ -19,9 +20,11 @@ class Cursor(object): def getPosition(self): return self.x, self.y + def enum(**enums): return type('Enum', (), enums) + Directions = enum(Left=1, Right=2, Up=3, Down=4, End=5, Home=6, CtrlEnd=7, CtrlHome=8) @@ -34,7 +37,7 @@ class ConsoleEmulator(object): self._cols = cols fm = QtGui.QFontMetrics(self.qp.font()) - self.fontWidth = fm.width('a') + self.fontWidth = fm.width('a') self.fontHeight = fm.height() def incrementPosition(self): @@ -44,7 +47,6 @@ class ConsoleEmulator(object): self._x = 0 self._y += 1 - def newLine(self): self.LF() self.CR() @@ -74,7 +76,7 @@ class ConsoleEmulator(object): self.qp.setBackgroundMode(0) self.qp.drawText(self._x * self.fontWidth, self.fontHeight + self._y * self.fontHeight, c) - self.incrementPosition() + self.incrementPosition() self.qp.setBackgroundMode(background) def write_c(self, c, noBackgroudOnSpaces=False): @@ -84,7 +86,7 @@ class ConsoleEmulator(object): self.qp.setBackgroundMode(0) self.qp.drawText(self._x * self.fontWidth, self.fontHeight + self._y * self.fontHeight, c) - self.incrementPosition() + self.incrementPosition() self.qp.setBackgroundMode(background) def getXY(self): @@ -99,7 +101,7 @@ class ConsoleEmulator(object): self.write_c(c, noBackgroudOnSpaces) def writeLn(self): - if True:#self._validatePosition(self._x, self._y): + if True: # self._validatePosition(self._x, self._y): self._y += 1 self._x = 0 diff --git a/androguard/gui/helpers.py b/androguard/gui/helpers.py index a76aebcf..61a8844c 100644 --- a/androguard/gui/helpers.py +++ b/androguard/gui/helpers.py @@ -1,7 +1,8 @@ from __future__ import print_function from builtins import object -class Signature(object): + +class Signature(object): def __init__(self, cls, method=None, descriptor=None): self.cls = cls self.class_components = self.cls.name.strip('L').strip(';').split('/') diff --git a/androguard/gui/mainwindow.py b/androguard/gui/mainwindow.py index e0e4db0e..7f90f0c9 100644 --- a/androguard/gui/mainwindow.py +++ b/androguard/gui/mainwindow.py @@ -49,14 +49,14 @@ class TabsWindow(QtWidgets.QTabWidget): self.clear() def actioncloseOtherTabs(self): - for i in range(self.currentIndex()-1, -1, -1): + for i in range(self.currentIndex() - 1, -1, -1): self.removeTab(i) for i in range(self.count(), self.currentIndex(), -1): self.removeTab(i) def actioncloseLeftTabs(self): - for i in range(self.currentIndex()-1, -1, -1): + for i in range(self.currentIndex() - 1, -1, -1): self.removeTab(i) def actioncloseRightTabs(self): @@ -81,7 +81,6 @@ class TabsWindow(QtWidgets.QTabWidget): androconf.debug("Enable %s" % title) self.bin_windows[current_title].enable() - def contextMenuEvent(self, event): menu = QtWidgets.QMenu(self) menu.addAction(self.closeAllTabs) @@ -90,6 +89,7 @@ class TabsWindow(QtWidgets.QTabWidget): menu.addAction(self.closeRightTabs) menu.exec_(event.globalPos()) + class MainWindow(QtWidgets.QMainWindow): '''Main window: self.central: QTabWidget in center area @@ -139,8 +139,8 @@ class MainWindow(QtWidgets.QMainWindow): def about(self): '''User clicked About menu. Display a Message box.''' QtWidgets.QMessageBox.about(self, "About Androguard GUI", - "

Androguard GUI is basically a GUI for Androguard :)." \ - "
Have fun !

") + "

Androguard GUI is basically a GUI for Androguard :)." \ + "
Have fun !

") def setupSession(self): androconf.debug("Setup Session") @@ -351,7 +351,6 @@ class MainWindow(QtWidgets.QMainWindow): self.central.setCurrentWidget(bin_window) - def openSourceWindow(self, current_class, method=None): '''Main function to open a decompile source window It checks if it already opened and open that tab, diff --git a/androguard/gui/methodswindow.py b/androguard/gui/methodswindow.py index 7e51a3a2..f1c9e4d5 100644 --- a/androguard/gui/methodswindow.py +++ b/androguard/gui/methodswindow.py @@ -3,7 +3,6 @@ from androguard.gui.xrefwindow import XrefDialogMethod class MethodsWindow(QtWidgets.QWidget): - def __init__(self, parent=None, win=None, session=None): super(MethodsWindow, self).__init__(parent) self.mainwin = win @@ -30,7 +29,6 @@ class MethodsWindow(QtWidgets.QWidget): class MethodsValueWindow(QtWidgets.QTreeView): - def __init__(self, parent=None, win=None, session=None): super(MethodsValueWindow, self).__init__(parent) self.mainwin = win @@ -70,7 +68,7 @@ class MethodsValueWindow(QtWidgets.QTreeView): self.model.setData(self.model.index( row, 4, QtCore.QModelIndex()), digest) self.reverse_methods[method.get_name() + method.get_class_name() + method.get_descriptor() + digest - ] = dx.get_method_analysis(method) + ] = dx.get_method_analysis(method) row += 1 self.proxyModel.setSourceModel(self.model) @@ -93,7 +91,7 @@ class MethodsValueWindow(QtWidgets.QTreeView): parent=self.mainwin, win=self.mainwin, method_analysis=self.reverse_methods[self.model.item(row).text() + - self.model.item(row, 1).text() + - self.model.item(row, 2).text() + + self.model.item(row, 1).text() + + self.model.item(row, 2).text() + self.model.item(row, 4).text()]) xwin.show() diff --git a/androguard/gui/resourceswindow.py b/androguard/gui/resourceswindow.py index 0366901f..2a1a774e 100644 --- a/androguard/gui/resourceswindow.py +++ b/androguard/gui/resourceswindow.py @@ -3,7 +3,6 @@ from PyQt5 import QtCore, QtGui, QtWidgets class ResourcesWindow(QtWidgets.QWidget): - def __init__(self, parent=None, win=None, session=None): super(ResourcesWindow, self).__init__(parent) self.mainwin = win @@ -30,7 +29,6 @@ class ResourcesWindow(QtWidgets.QWidget): class ResourcesValueWindow(QtWidgets.QTreeView): - def __init__(self, parent=None, win=None, session=None): super(ResourcesValueWindow, self).__init__(parent) self.mainwin = win diff --git a/androguard/gui/search.ui b/androguard/gui/search.ui index 910b79f7..c6ae67e3 100644 --- a/androguard/gui/search.ui +++ b/androguard/gui/search.ui @@ -1,43 +1,43 @@ - searchform - - - - 0 - 0 - 430 - 116 - - - - Search - - - - - - Search - + searchform + + + + 0 + 0 + 430 + 116 + + + + Search + + + + + + Search + + + + + + + + + + hex + + + + - - - - - - - - hex - - - - - - - lineEdit - checkHex - pushButton - - - + + lineEdit + checkHex + pushButton + + + diff --git a/androguard/gui/sourcewindow.py b/androguard/gui/sourcewindow.py index a32b5ef2..f846ad9d 100644 --- a/androguard/gui/sourcewindow.py +++ b/androguard/gui/sourcewindow.py @@ -6,10 +6,8 @@ from androguard.gui.helpers import class2func, method2func, classdot2func, class from androguard.gui.renamewindow import RenameDialog from androguard.gui.xrefwindow import XrefDialogMethod, XrefDialogField - import pyperclip - from pygments.formatters.html import HtmlFormatter from pygments.lexers import JavaLexer from pygments.styles import get_style_by_name @@ -17,7 +15,6 @@ from pygments.styles import get_style_by_name from pygments.style import Style from pygments.token import Token, Comment, Name, Keyword, Generic, Number, Operator, String - BINDINGS_NAMES = [ 'NAME_PACKAGE', 'NAME_PROTOTYPE', 'NAME_SUPERCLASS', 'NAME_INTERFACE', 'NAME_FIELD', 'NAME_METHOD_PROTOTYPE', 'NAME_ARG', 'NAME_CLASS_ASSIGNMENT', @@ -45,6 +42,7 @@ class SourceDocument(QtGui.QTextDocument): self.binding[cursor.position()] = t cursor.insertText(t[1]) + class PygmentsBlockUserData(QtGui.QTextBlockUserData): """ Storage for the user data associated with each line. """ @@ -58,10 +56,11 @@ class PygmentsBlockUserData(QtGui.QTextBlockUserData): def __repr__(self): attrs = ['syntax_stack'] - kwds = ', '.join([ '%s=%r' % (attr, getattr(self, attr)) - for attr in attrs ]) + kwds = ', '.join(['%s=%r' % (attr, getattr(self, attr)) + for attr in attrs]) return 'PygmentsBlockUserData(%s)' % kwds + BASE03 = '#002B36' BASE02 = '#073642' BASE01 = '#586E75' @@ -79,18 +78,19 @@ BLUE = '#268BD2' CYAN = '#2AA198' GREEN = '#859900' + class SolarizedStyle(Style): background_color = BASE03 styles = { Keyword: GREEN, Keyword.Constant: ORANGE, Keyword.Declaration: BLUE, - #Keyword.Namespace - #Keyword.Pseudo + # Keyword.Namespace + # Keyword.Pseudo Keyword.Reserved: BLUE, Keyword.Type: RED, - #Name + # Name Name.Attribute: BASE1, Name.Builtin: YELLOW, Name.Builtin.Pseudo: BLUE, @@ -100,69 +100,70 @@ class SolarizedStyle(Style): Name.Entity: ORANGE, Name.Exception: ORANGE, Name.Function: BLUE, - #Name.Label - #Name.Namespace - #Name.Other + # Name.Label + # Name.Namespace + # Name.Other Name.Tag: BLUE, Name.Variable: BLUE, - #Name.Variable.Class - #Name.Variable.Global - #Name.Variable.Instance + # Name.Variable.Class + # Name.Variable.Global + # Name.Variable.Instance - #Literal - #Literal.Date + # Literal + # Literal.Date String: CYAN, String.Backtick: BASE01, String.Char: CYAN, String.Doc: BASE1, - #String.Double + # String.Double String.Escape: ORANGE, String.Heredoc: BASE1, - #String.Interpol - #String.Other + # String.Interpol + # String.Other String.Regex: RED, - #String.Single - #String.Symbol + # String.Single + # String.Symbol Number: CYAN, - #Number.Float - #Number.Hex - #Number.Integer - #Number.Integer.Long - #Number.Oct + # Number.Float + # Number.Hex + # Number.Integer + # Number.Integer.Long + # Number.Oct Operator: GREEN, - #Operator.Word + # Operator.Word - #Punctuation: ORANGE, + # Punctuation: ORANGE, Comment: BASE01, - #Comment.Multiline + # Comment.Multiline Comment.Preproc: GREEN, - #Comment.Single + # Comment.Single Comment.Special: GREEN, - #Generic + # Generic Generic.Deleted: CYAN, Generic.Emph: 'italic', Generic.Error: RED, Generic.Heading: ORANGE, Generic.Inserted: GREEN, - #Generic.Output - #Generic.Prompt + # Generic.Output + # Generic.Prompt Generic.Strong: 'bold', Generic.Subheading: ORANGE, - #Generic.Traceback + # Generic.Traceback Token: BASE1, Token.Other: ORANGE, } + class MyHighlighter(QtGui.QSyntaxHighlighter): """ Syntax highlighter that uses Pygments for parsing. """ - #--------------------------------------------------------------------------- + # --------------------------------------------------------------------------- # 'QSyntaxHighlighter' interface - #--------------------------------------------------------------------------- + # --------------------------------------------------------------------------- def __init__(self, parent, lexer=None): super(MyHighlighter, self).__init__(parent) @@ -195,14 +196,14 @@ class MyHighlighter(QtGui.QSyntaxHighlighter): # Clean up for the next go-round. del self._lexer._saved_state_stack - #--------------------------------------------------------------------------- + # --------------------------------------------------------------------------- # 'PygmentsHighlighter' interface - #--------------------------------------------------------------------------- + # --------------------------------------------------------------------------- def set_style(self, style): """ Sets the style to the specified Pygments style. """ - style = SolarizedStyle#get_style_by_name(style) + style = SolarizedStyle # get_style_by_name(style) self._style = style self._clear_caches() @@ -217,9 +218,9 @@ class MyHighlighter(QtGui.QSyntaxHighlighter): self._style = None self._clear_caches() - #--------------------------------------------------------------------------- + # --------------------------------------------------------------------------- # Protected interface - #--------------------------------------------------------------------------- + # --------------------------------------------------------------------------- def _clear_caches(self): """ Clear caches for brushes and formats. @@ -282,6 +283,7 @@ class MyHighlighter(QtGui.QSyntaxHighlighter): int(color[4:6], base=16)) return qcolor + class SourceWindow(QtWidgets.QTextEdit): '''Each tab is implemented as a Source Window class. Attributes: @@ -315,7 +317,6 @@ class SourceWindow(QtWidgets.QTextEdit): self.setReadOnly(True) self.setStyleSheet("background: rgba(0,43,54,100%)") - self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.customContextMenuRequested.connect(self.CustomContextMenuHandler) @@ -327,11 +328,11 @@ class SourceWindow(QtWidgets.QTextEdit): TODO: implement it, because does not work for now. ''' - #TODO: we need to find a way to scroll to the right place because + # TODO: we need to find a way to scroll to the right place because # moving the cursor is not enough. Indeed if it is already in the window # it does not do nothing - #TODO: idea, highlight the method in the screen so we do not have to search for it + # TODO: idea, highlight the method in the screen so we do not have to search for it androconf.debug("Browsing to %s -> %s" % (self.current_class, method)) @@ -366,14 +367,14 @@ class SourceWindow(QtWidgets.QTextEdit): lines.extend(self.current_class.get_source_ext()) - #TODO: delete doc when tab is closed? not deleted by "self" :( + # TODO: delete doc when tab is closed? not deleted by "self" :( if hasattr(self, "doc"): del self.doc self.doc = SourceDocument(parent=self, lines=lines) self.setDocument(self.doc) - #No need to save hightlighter. highlighBlock will automatically be called - #because we passed the QTextDocument to QSyntaxHighlighter constructor + # No need to save hightlighter. highlighBlock will automatically be called + # because we passed the QTextDocument to QSyntaxHighlighter constructor MyHighlighter(self.doc, lexer=JavaLexer()) def cursor_position_changed(self): @@ -387,7 +388,7 @@ class SourceWindow(QtWidgets.QTextEdit): if len(cur.selectedText()) == 0: cur.select(QtGui.QTextCursor.WordUnderCursor) self.setTextCursor(cur) - #androconf.debug("cursor: %s" % cur.selectedText()) + # androconf.debug("cursor: %s" % cur.selectedText()) def keyPressEvent(self, event): '''Keyboard shortcuts''' @@ -411,14 +412,14 @@ class SourceWindow(QtWidgets.QTextEdit): statusTip="List the references where this element is used", triggered=self.actionXref)) menu.addAction(QtWidgets.QAction("&Goto", - self, - statusTip="Go to element definition", - triggered=self.actionGoto)) + self, + statusTip="Go to element definition", + triggered=self.actionGoto)) menu.addAction( QtWidgets.QAction("Rename...", - self, - statusTip="Rename an element (class, method, ...)", - triggered=self.actionRename)) + self, + statusTip="Rename an element (class, method, ...)", + triggered=self.actionRename)) menu.addAction(QtWidgets.QAction( "&Info", self, @@ -432,10 +433,10 @@ class SourceWindow(QtWidgets.QTextEdit): "Reload sources (needed when renaming changed other tabs)", triggered=self.reload_java_sources)) menu.addAction(QtWidgets.QAction("&Copy", - self, - shortcut=QtGui.QKeySequence.Copy, - statusTip="Copy the current selection's contents to the clipboard", - triggered=self.actionCopy)) + self, + shortcut=QtGui.QKeySequence.Copy, + statusTip="Copy the current selection's contents to the clipboard", + triggered=self.actionCopy)) menu.exec_(QtGui.QCursor.pos()) def actionXref(self): @@ -518,17 +519,17 @@ class SourceWindow(QtWidgets.QTextEdit): self.mainwin.showStatus("No xref returned.") return - #elif t[0] == 'NAME_METHOD_INVOKE': - # class_, method_ = t[2].split(' -> ') - # if class_ == 'this': - # class_ = self.current_class - # else: - # class_ = classdot2class(class_) - #elif t[0] == 'NAME_PROTOTYPE': - # class_ = classdot2class(t[2] + '.' + t[1]) - #else: - # self.mainwin.showStatus("Xref not available. Info ok: '%s' but object not supported." % selection) - # return + # elif t[0] == 'NAME_METHOD_INVOKE': + # class_, method_ = t[2].split(' -> ') + # if class_ == 'this': + # class_ = self.current_class + # else: + # class_ = classdot2class(class_) + # elif t[0] == 'NAME_PROTOTYPE': + # class_ = classdot2class(t[2] + '.' + t[1]) + # else: + # self.mainwin.showStatus("Xref not available. Info ok: '%s' but object not supported." % selection) + # return def actionCopy(self): print('COPY') @@ -723,12 +724,12 @@ class SourceWindow(QtWidgets.QTextEdit): self.mainwin.showStatus("Impossible to find the method") return - method_item.set_name(str(newname)) #unicode to ascii + method_item.set_name(str(newname)) # unicode to ascii elif type_ == "CLASS": newname_class = classdot2class(package_ + '.' + newname) self.mainwin.showStatus("New name: %s" % newname_class) - class_item = self.current_class #getattr(self.mainwin.d, classdot2func(class_)) - class_item.set_name(str(newname_class)) #unicode to ascii + class_item = self.current_class # getattr(self.mainwin.d, classdot2func(class_)) + class_item.set_name(str(newname_class)) # unicode to ascii self.mainwin.updateDockWithTree() elif type_ == 'FIELD': if self.field_name_exist(newname): diff --git a/androguard/gui/stringswindow.py b/androguard/gui/stringswindow.py index 0eaa3dd0..b2cf248f 100644 --- a/androguard/gui/stringswindow.py +++ b/androguard/gui/stringswindow.py @@ -3,7 +3,6 @@ from androguard.gui.xrefwindow import XrefDialogString class StringsWindow(QtWidgets.QWidget): - def __init__(self, parent=None, win=None, session=None): super(StringsWindow, self).__init__(parent) self.mainwin = win @@ -30,7 +29,6 @@ class StringsWindow(QtWidgets.QWidget): class StringsValueWindow(QtWidgets.QTreeView): - def __init__(self, parent=None, win=None, session=None): super(StringsValueWindow, self).__init__(parent) self.mainwin = win @@ -63,7 +61,7 @@ class StringsValueWindow(QtWidgets.QTreeView): self.model.setData(self.model.index( row, 3, QtCore.QModelIndex()), digest) self.reverse_strings[repr(strings_analysis[string_value].get_value()) + digest - ] = strings_analysis[string_value] + ] = strings_analysis[string_value] row += 1 self.proxyModel.setSourceModel(self.model) diff --git a/androguard/gui/treewindow.py b/androguard/gui/treewindow.py index 3f958548..f1c40e91 100644 --- a/androguard/gui/treewindow.py +++ b/androguard/gui/treewindow.py @@ -7,8 +7,8 @@ from androguard.gui.xrefwindow import XrefDialogClass from androguard.gui.sourcewindow import SourceWindow from androguard.gui.helpers import classdot2class, Signature + class HashableQTreeWidgetItem(QtWidgets.QTreeWidgetItem): - # TODO this is a pure workaround to have a hash method! # It seems that for python2 is __hash__ available # But not on python3 @@ -17,7 +17,6 @@ class HashableQTreeWidgetItem(QtWidgets.QTreeWidgetItem): class TreeWindow(QtWidgets.QTreeWidget): - def __init__(self, parent=None, win=None, session=None): super(TreeWindow, self).__init__(parent) self.itemDoubleClicked.connect(self.itemDoubleClickedHandler) @@ -92,13 +91,13 @@ class TreeWindow(QtWidgets.QTreeWidget): statusTip="List the references where this element is used", triggered=self.actionXref) self.expandAct = QtWidgets.QAction("Expand", - self, - statusTip="Expand all the subtrees", - triggered=self.actionExpand) + self, + statusTip="Expand all the subtrees", + triggered=self.actionExpand) self.collapseAct = QtWidgets.QAction("Collapse", - self, - statusTip="Collapse all the subtrees", - triggered=self.actionCollapse) + self, + statusTip="Collapse all the subtrees", + triggered=self.actionCollapse) def actionXref(self): item = self.currentItem() @@ -126,7 +125,6 @@ class TreeWindow(QtWidgets.QTreeWidget): class_analysis=class_analysis) xwin.show() - def expand_children(self, item): self.expandItem(item) for i in range(item.childCount()): diff --git a/androguard/gui/xrefwindow.py b/androguard/gui/xrefwindow.py index 8fde2675..28523b72 100644 --- a/androguard/gui/xrefwindow.py +++ b/androguard/gui/xrefwindow.py @@ -67,7 +67,6 @@ class XrefDialogClass(QtWidgets.QDialog): class XrefDialogMethod(QtWidgets.QDialog): - def __init__(self, parent=None, win=None, @@ -108,7 +107,6 @@ class XrefDialogMethod(QtWidgets.QDialog): class XrefDialogField(QtWidgets.QDialog): - def __init__(self, parent=None, win=None, @@ -153,7 +151,6 @@ class XrefDialogField(QtWidgets.QDialog): class XrefDialogString(QtWidgets.QDialog): - def __init__(self, parent=None, win=None, string_analysis=None): super(XrefDialogString, self).__init__(parent) self.string_analysis = string_analysis @@ -248,12 +245,11 @@ class XrefDialog(QtWidgets.QDialog): method_ = xref_item[0].get_name() descriptor_ = xref_item[0].get_descriptor() xrefs.append(classmethod2display(class_, method_, descriptor_)) -# print xrefs + # print xrefs return xrefs class XrefListView(QtWidgets.QWidget): - def __init__(self, parent=None, win=None, @@ -290,7 +286,6 @@ class XrefListView(QtWidgets.QWidget): class XrefValueWindow(QtWidgets.QTreeView): - def __init__(self, parent=None, win=None, xrefs=None, headers=None): super(XrefValueWindow, self).__init__(parent) self.parent = parent diff --git a/androguard/misc.py b/androguard/misc.py index ee526189..f981024e 100644 --- a/androguard/misc.py +++ b/androguard/misc.py @@ -1,4 +1,5 @@ from future import standard_library + standard_library.install_aliases() from androguard.core import * from androguard.core.bytecode import * @@ -11,6 +12,7 @@ from pickle import dump, load from androguard.core import androconf from androguard import session + def init_print_colors(): from IPython.utils import coloransi, io androconf.default_colors(coloransi.TermColors) @@ -26,6 +28,7 @@ def get_default_session(): CONF["SESSION"] = session.Session() return CONF["SESSION"] + def save_session(l, filename): """ save your session ! @@ -138,7 +141,7 @@ def RunDecompiler(d, dx, decompiler, session=None): if decompiler == "dex2jad": d.set_decompiler(DecompilerDex2Jad( d, androconf.CONF["PATH_DEX2JAR"], androconf.CONF["BIN_DEX2JAR" - ], androconf.CONF["PATH_JAD"], + ], androconf.CONF["PATH_JAD"], androconf.CONF["BIN_JAD"], androconf.CONF["TMP_DIRECTORY"])) elif decompiler == "dex2fernflower": d.set_decompiler(DecompilerDex2Fernflower( @@ -147,7 +150,7 @@ def RunDecompiler(d, dx, decompiler, session=None): ], androconf.CONF["PATH_FERNFLOWER"], androconf.CONF[ "BIN_FERNFLOWER" ], androconf.CONF["OPTIONS_FERNFLOWER" - ], androconf.CONF["TMP_DIRECTORY"])) + ], androconf.CONF["TMP_DIRECTORY"])) elif decompiler == "ded": d.set_decompiler(DecompilerDed(d, androconf.CONF["PATH_DED"], androconf.CONF["BIN_DED"], diff --git a/androguard/patch/zipfile.py b/androguard/patch/zipfile.py index 173b1c21..486bfd58 100644 --- a/androguard/patch/zipfile.py +++ b/androguard/patch/zipfile.py @@ -3,6 +3,7 @@ Read and write ZIP files. """ from __future__ import print_function from future import standard_library + standard_library.install_aliases() from builtins import chr from builtins import map @@ -15,14 +16,16 @@ import io import re try: - import zlib # We may need its compression method + import zlib # We may need its compression method + crc32 = zlib.crc32 except ImportError: zlib = None crc32 = binascii.crc32 __all__ = ["BadZipfile", "error", "ZIP_STORED", "ZIP_DEFLATED", "is_zipfile", - "ZipInfo", "ZipFile", "PyZipFile", "LargeZipFile" ] + "ZipInfo", "ZipFile", "PyZipFile", "LargeZipFile"] + class BadZipfile(Exception): pass @@ -34,7 +37,8 @@ class LargeZipFile(Exception): and those extensions are disabled. """ -error = BadZipfile # The exception raised by this module + +error = BadZipfile # The exception raised by this module ZIP64_LIMIT = (1 << 31) - 1 ZIP_FILECOUNT_LIMIT = 1 << 16 @@ -138,14 +142,16 @@ _CD64_NUMBER_ENTRIES_TOTAL = 7 _CD64_DIRECTORY_SIZE = 8 _CD64_OFFSET_START_CENTDIR = 9 + def _check_zipfile(fp): try: if _EndRecData(fp): - return True # file has correct magic number + return True # file has correct magic number except IOError: pass return False + def is_zipfile(filename): """Quickly see if a file is a ZIP file by checking the magic number. @@ -162,6 +168,7 @@ def is_zipfile(filename): pass return result + def _EndRecData64(fpin, offset, endrec): """ Read the ZIP64 end-of-archive records and use that to update endrec @@ -185,8 +192,8 @@ def _EndRecData64(fpin, offset, endrec): fpin.seek(offset - sizeEndCentDir64Locator - sizeEndCentDir64, 2) data = fpin.read(sizeEndCentDir64) sig, sz, create_version, read_version, disk_num, disk_dir, \ - dircount, dircount2, dirsize, diroffset = \ - struct.unpack(structEndArchive64, data) + dircount, dircount2, dirsize, diroffset = \ + struct.unpack(structEndArchive64, data) if sig != stringEndArchive64: return endrec @@ -222,7 +229,7 @@ def _EndRecData(fpin): if data[0:4] == stringEndArchive and data[-2:] == "\000\000": # the signature is correct and there's no comment, unpack structure endrec = struct.unpack(structEndArchive, data) - endrec=list(endrec) + endrec = list(endrec) # Append a blank comment and record start offset endrec.append("") @@ -242,10 +249,10 @@ def _EndRecData(fpin): start = data.rfind(stringEndArchive) if start >= 0: # found the magic number; attempt to unpack and interpret - recData = data[start:start+sizeEndCentDir] + recData = data[start:start + sizeEndCentDir] endrec = list(struct.unpack(structEndArchive, recData)) - commentSize = endrec[_ECD_COMMENT_SIZE] #as claimed by the zip file - comment = data[start+sizeEndCentDir:start+sizeEndCentDir+commentSize] + commentSize = endrec[_ECD_COMMENT_SIZE] # as claimed by the zip file + comment = data[start + sizeEndCentDir:start + sizeEndCentDir + commentSize] endrec.append(comment) endrec.append(maxCommentStart + start) @@ -257,33 +264,33 @@ def _EndRecData(fpin): return -class ZipInfo (object): +class ZipInfo(object): """Class with attributes describing each file in the ZIP archive.""" __slots__ = ( - 'orig_filename', - 'filename', - 'date_time', - 'compress_type', - 'comment', - 'extra', - 'create_system', - 'create_version', - 'extract_version', - 'reserved', - 'flag_bits', - 'volume', - 'internal_attr', - 'external_attr', - 'header_offset', - 'CRC', - 'compress_size', - 'file_size', - '_raw_time', - ) + 'orig_filename', + 'filename', + 'date_time', + 'compress_type', + 'comment', + 'extra', + 'create_system', + 'create_version', + 'extract_version', + 'reserved', + 'flag_bits', + 'volume', + 'internal_attr', + 'external_attr', + 'header_offset', + 'CRC', + 'compress_size', + 'file_size', + '_raw_time', + ) - def __init__(self, filename="NoName", date_time=(1980,1,1,0,0,0)): - self.orig_filename = filename # Original file name in archive + def __init__(self, filename="NoName", date_time=(1980, 1, 1, 0, 0, 0)): + self.orig_filename = filename # Original file name in archive # Terminate the file name at the first null byte. Null bytes in file # names are used as tricks by viruses in archives. @@ -296,24 +303,24 @@ class ZipInfo (object): if os.sep != "/" and os.sep in filename: filename = filename.replace(os.sep, "/") - self.filename = filename # Normalized file name - self.date_time = date_time # year, month, day, hour, min, sec + self.filename = filename # Normalized file name + self.date_time = date_time # year, month, day, hour, min, sec # Standard values: - self.compress_type = ZIP_STORED # Type of compression for the file - self.comment = "" # Comment for each file - self.extra = "" # ZIP extra data + self.compress_type = ZIP_STORED # Type of compression for the file + self.comment = "" # Comment for each file + self.extra = "" # ZIP extra data if sys.platform == 'win32': - self.create_system = 0 # System which created ZIP archive + self.create_system = 0 # System which created ZIP archive else: # Assume everything else is unix-y - self.create_system = 3 # System which created ZIP archive - self.create_version = 20 # Version which created ZIP archive - self.extract_version = 20 # Version needed to extract archive - self.reserved = 0 # Must be zero - self.flag_bits = 0 # ZIP flag bits - self.volume = 0 # Volume number of file header - self.internal_attr = 0 # Internal attributes - self.external_attr = 0 # External file attributes + self.create_system = 3 # System which created ZIP archive + self.create_version = 20 # Version which created ZIP archive + self.extract_version = 20 # Version needed to extract archive + self.reserved = 0 # Must be zero + self.flag_bits = 0 # ZIP flag bits + self.volume = 0 # Volume number of file header + self.internal_attr = 0 # Internal attributes + self.external_attr = 0 # External file attributes # Other attributes are set by class ZipFile(object): # header_offset Byte offset to the file header # CRC CRC-32 of the uncompressed file @@ -340,7 +347,7 @@ class ZipInfo (object): # fall back to the ZIP64 extension fmt = '> 1) & 0x7FFFFFFF) table[i] = crc return table + crctable = _GenerateCRCTable() def _crc32(self, ch, crc): @@ -460,11 +468,12 @@ class _ZipDecrypter(object): """Decrypt a single character.""" c = ord(c) k = self.key2 | 2 - c = c ^ (((k * (k^1)) >> 8) & 255) + c = c ^ (((k * (k ^ 1)) >> 8) & 255) c = chr(c) self._UpdateKeys(c) return c + class ZipExtFile(io.BufferedIOBase): """File-like object for reading an archive member. Is returned by ZipFile.open(). @@ -624,7 +633,7 @@ class ZipExtFile(io.BufferedIOBase): data = ''.join(map(self._decrypter, data)) if self._compress_type == ZIP_STORED: - self._update_crc(data, eof=(self._compress_left==0)) + self._update_crc(data, eof=(self._compress_left == 0)) self._readbuffer = self._readbuffer[self._offset:] + data self._offset = 0 else: @@ -633,7 +642,7 @@ class ZipExtFile(io.BufferedIOBase): # Handle unconsumed data. if (len(self._unconsumed) > 0 and n > len_readbuffer and - self._compress_type == ZIP_DEFLATED): + self._compress_type == ZIP_DEFLATED): data = self._decompressor.decompress( self._unconsumed, max(n - len_readbuffer, self.MIN_READ_SIZE) @@ -654,7 +663,6 @@ class ZipExtFile(io.BufferedIOBase): return data - class ZipFile(object): """ Class with methods to open, read, write, close, list zip files. @@ -670,7 +678,7 @@ class ZipFile(object): """ - fp = None # Set here since __del__ checks it + fp = None # Set here since __del__ checks it def __init__(self, file, mode="r", compression=ZIP_STORED, allowZip64=False): """Open the ZIP file with mode read "r", write "w" or append "a".""" @@ -688,8 +696,8 @@ class ZipFile(object): self._allowZip64 = allowZip64 self._didModify = False self.debug = 0 # Level of printing: 0 through 3 - self.NameToInfo = {} # Find file info given name - self.filelist = [] # List of ZipInfo instances for archive + self.NameToInfo = {} # Find file info given name + self.filelist = [] # List of ZipInfo instances for archive self.compression = compression # Method of compression self.mode = key = mode.replace('b', '')[0] self.pwd = None @@ -699,7 +707,7 @@ class ZipFile(object): if isinstance(file, basestring): self._filePassed = 0 self.filename = file - modeDict = {'r' : 'rb', 'w': 'wb', 'a' : 'r+b'} + modeDict = {'r': 'rb', 'w': 'wb', 'a': 'r+b'} try: self.fp = open(file, modeDict[mode]) except IOError: @@ -766,9 +774,9 @@ class ZipFile(object): raise BadZipfile("File is not a zip file") if self.debug > 1: print(endrec) - size_cd = endrec[_ECD_SIZE] # bytes in central directory - offset_cd = endrec[_ECD_OFFSET] # offset of central directory - self.comment = endrec[_ECD_COMMENT] # archive comment + size_cd = endrec[_ECD_SIZE] # bytes in central directory + offset_cd = endrec[_ECD_OFFSET] # offset of central directory + self.comment = endrec[_ECD_COMMENT] # archive comment # "concat" is zero, unless zip was concatenated to another file concat = endrec[_ECD_LOCATION] - size_cd - offset_cd @@ -799,13 +807,13 @@ class ZipFile(object): x.comment = fp.read(centdir[_CD_COMMENT_LENGTH]) x.header_offset = centdir[_CD_LOCAL_HEADER_OFFSET] (x.create_version, x.create_system, x.extract_version, x.reserved, - x.flag_bits, x.compress_type, t, d, - x.CRC, x.compress_size, x.file_size) = centdir[1:12] + x.flag_bits, x.compress_type, t, d, + x.CRC, x.compress_size, x.file_size) = centdir[1:12] x.volume, x.internal_attr, x.external_attr = centdir[15:18] # Convert date/time code to (year, month, day, hour, min, sec) x._raw_time = t - x.date_time = ( (d>>9)+1980, (d>>5)&0xF, d&0x1F, - t>>11, (t>>5)&0x3F, (t&0x1F) * 2 ) + x.date_time = ((d >> 9) + 1980, (d >> 5) & 0xF, d & 0x1F, + t >> 11, (t >> 5) & 0x3F, (t & 0x1F) * 2) x._decodeExtra() x.header_offset = x.header_offset + concat @@ -821,7 +829,6 @@ class ZipFile(object): if self.debug > 2: print("total", total) - def namelist(self): """Return a list of file names in the archive.""" l = [] @@ -849,7 +856,7 @@ class ZipFile(object): # Read by chunks, to avoid an OverflowError or a # MemoryError with very large embedded files. f = self.open(zinfo.filename, "r") - while f.read(chunk_size): # Check CRC-32 + while f.read(chunk_size): # Check CRC-32 pass except BadZipfile: return zinfo.filename @@ -907,7 +914,7 @@ class ZipFile(object): if fname != zinfo.orig_filename: raise BadZipfile('File name in directory "%s" and header "%s" differ.' % ( - zinfo.orig_filename, fname)) + zinfo.orig_filename, fname)) # check for encrypted flag & handle password is_encrypted = zinfo.flag_bits & 0x1 @@ -917,7 +924,7 @@ class ZipFile(object): pwd = self.pwd if not pwd: raise RuntimeError("File %s is encrypted, " \ - "password required for extraction" % name) + "password required for extraction" % name) zd = _ZipDecrypter(pwd) # The first 12 bytes in the cypher stream is an encryption header @@ -936,7 +943,7 @@ class ZipFile(object): if ord(h[11]) != check_byte: raise RuntimeError("Bad password for file", name) - return ZipExtFile(zef_file, mode, zinfo, zd) + return ZipExtFile(zef_file, mode, zinfo, zd) def extract(self, member, path=None, pwd=None): """Extract a member from the archive to the current working directory, @@ -1004,7 +1011,7 @@ class ZipFile(object): def _writecheck(self, zinfo): """Check for errors before writing a file to the archive.""" if zinfo.filename in self.NameToInfo: - if self.debug: # Warning for duplicate names + if self.debug: # Warning for duplicate names print("Duplicate name:", zinfo.filename) if self.mode not in ("w", "a"): raise RuntimeError('write() requires mode "w" or "a"') @@ -1026,7 +1033,7 @@ class ZipFile(object): arcname.""" if not self.fp: raise RuntimeError( - "Attempt to write to ZIP archive that was already closed") + "Attempt to write to ZIP archive that was already closed") st = os.stat(filename) isdir = stat.S_ISDIR(st.st_mode) @@ -1041,7 +1048,7 @@ class ZipFile(object): if isdir: arcname += '/' zinfo = ZipInfo(arcname, date_time) - zinfo.external_attr = (st[0] & 0xFFFF) << 16 # Unix attributes + zinfo.external_attr = (st[0] & 0xFFFF) << 16 # Unix attributes if compress_type is None: zinfo.compress_type = self.compression else: @@ -1049,7 +1056,7 @@ class ZipFile(object): zinfo.file_size = st.st_size zinfo.flag_bits = 0x00 - zinfo.header_offset = self.fp.tell() # Start of header bytes + zinfo.header_offset = self.fp.tell() # Start of header bytes self._writecheck(zinfo) self._didModify = True @@ -1071,7 +1078,7 @@ class ZipFile(object): self.fp.write(zinfo.FileHeader()) if zinfo.compress_type == ZIP_DEFLATED: cmpr = zlib.compressobj(zlib.Z_DEFAULT_COMPRESSION, - zlib.DEFLATED, -15) + zlib.DEFLATED, -15) else: cmpr = None while 1: @@ -1094,10 +1101,10 @@ class ZipFile(object): zinfo.CRC = CRC zinfo.file_size = file_size # Seek backwards and write CRC and file sizes - position = self.fp.tell() # Preserve current position in file + position = self.fp.tell() # Preserve current position in file self.fp.seek(zinfo.header_offset + 14, 0) self.fp.write(struct.pack("= ZIP_FILECOUNT_LIMIT or - centDirOffset > ZIP64_LIMIT or - centDirSize > ZIP64_LIMIT): + centDirOffset > ZIP64_LIMIT or + centDirSize > ZIP64_LIMIT): # Need to write the ZIP64 end-of-archive records zip64endrec = struct.pack( - structEndArchive64, stringEndArchive64, - 44, 45, 45, 0, 0, centDirCount, centDirCount, - centDirSize, centDirOffset) + structEndArchive64, stringEndArchive64, + 44, 45, 45, 0, 0, centDirCount, centDirCount, + centDirSize, centDirOffset) self.fp.write(zip64endrec) zip64locrec = struct.pack( - structEndArchive64Locator, - stringEndArchive64Locator, 0, pos2, 1) + structEndArchive64Locator, + stringEndArchive64Locator, 0, pos2, 1) self.fp.write(zip64locrec) centDirCount = min(centDirCount, 0xFFFF) centDirSize = min(centDirSize, 0xFFFFFFFF) @@ -1263,7 +1270,7 @@ class ZipFile(object): class PyZipFile(ZipFile): """Class to create ZIP archives with Python library files and packages.""" - def writepy(self, pathname, basename = ""): + def writepy(self, pathname, basename=""): """Add all files from "pathname" to the ZIP archive. If pathname is a package directory, search the directory and @@ -1302,7 +1309,7 @@ class PyZipFile(ZipFile): self.writepy(path, basename) # Recursive call elif ext == ".py": fname, arcname = self._get_codename(path[0:-3], - basename) + basename) if self.debug: print("Adding", arcname) self.write(fname, arcname) @@ -1315,7 +1322,7 @@ class PyZipFile(ZipFile): root, ext = os.path.splitext(filename) if ext == ".py": fname, arcname = self._get_codename(path[0:-3], - basename) + basename) if self.debug: print("Adding", arcname) self.write(fname, arcname) @@ -1334,14 +1341,14 @@ class PyZipFile(ZipFile): archive name, compiling if necessary. For example, given /python/lib/string, return (/python/lib/string.pyc, string). """ - file_py = pathname + ".py" + file_py = pathname + ".py" file_pyc = pathname + ".pyc" file_pyo = pathname + ".pyo" if os.path.isfile(file_pyo) and \ - os.stat(file_pyo).st_mtime >= os.stat(file_py).st_mtime: - fname = file_pyo # Use .pyo file + os.stat(file_pyo).st_mtime >= os.stat(file_py).st_mtime: + fname = file_pyo # Use .pyo file elif not os.path.isfile(file_pyc) or \ - os.stat(file_pyc).st_mtime < os.stat(file_py).st_mtime: + os.stat(file_pyc).st_mtime < os.stat(file_py).st_mtime: import py_compile if self.debug: print("Compiling", file_py) @@ -1358,9 +1365,9 @@ class PyZipFile(ZipFile): return (fname, archivename) -def main(args = None): +def main(args=None): import textwrap - USAGE=textwrap.dedent("""\ + USAGE = textwrap.dedent("""\ Usage: zipfile.py -l zipfile.zip # Show listing of a zipfile zipfile.py -t zipfile.zip # Test if a zipfile is valid @@ -1423,8 +1430,8 @@ def main(args = None): elif os.path.isdir(path): for nm in os.listdir(path): addToZip(zf, - os.path.join(path, nm), os.path.join(zippath, nm)) - # else: ignore + os.path.join(path, nm), os.path.join(zippath, nm)) + # else: ignore zf = ZipFile(args[1], 'w', allowZip64=True) for src in args[2:]: @@ -1432,5 +1439,6 @@ def main(args = None): zf.close() + if __name__ == "__main__": main() diff --git a/androguard/session.py b/androguard/session.py index f27d3814..8eb0e03b 100644 --- a/androguard/session.py +++ b/androguard/session.py @@ -10,12 +10,15 @@ from androguard.core.analysis.analysis import * from androguard.decompiler.decompiler import * from androguard import misc + def Save(session, filename): misc.save_session(session, filename) + def Load(filename): return misc.load_session(filename) + class Session(object): def __init__(self, export_ipython=False): self.setupObjects() diff --git a/androgui.py b/androgui.py index d5ea7fff..3681a1ef 100755 --- a/androgui.py +++ b/androgui.py @@ -10,7 +10,6 @@ from androguard.gui.mainwindow import MainWindow from PyQt5 import QtWidgets, QtGui - if __name__ == '__main__': parser = argparse.ArgumentParser(description="Androguard GUI") parser.add_argument("-d", "--debug", action="store_true", default=False) diff --git a/tests/test_analysis.py b/tests/test_analysis.py index 58975ef3..a3f28c42 100644 --- a/tests/test_analysis.py +++ b/tests/test_analysis.py @@ -1,6 +1,7 @@ import unittest import sys + PATH_INSTALL = "./" sys.path.append(PATH_INSTALL) @@ -9,7 +10,6 @@ from androguard.core.analysis import analysis class AnalysisTest(unittest.TestCase): - def testDex(self): with open("examples/android/TestsAndroguard/bin/classes.dex", "rb") as fd: diff --git a/tests/test_apk.py b/tests/test_apk.py index c5c810e4..e6d823d2 100644 --- a/tests/test_apk.py +++ b/tests/test_apk.py @@ -1,6 +1,7 @@ import unittest import sys + PATH_INSTALL = "./" sys.path.append(PATH_INSTALL) @@ -8,7 +9,6 @@ from androguard.core.bytecodes import apk class APKTest(unittest.TestCase): - def testAPK(self): with open("examples/android/TestsAndroguard/bin/TestActivity.apk", "rb") as fd: diff --git a/tests/test_arsc.py b/tests/test_arsc.py index bd5a8ace..9b6f77ad 100755 --- a/tests/test_arsc.py +++ b/tests/test_arsc.py @@ -1,13 +1,13 @@ import unittest import sys + PATH_INSTALL = "./" sys.path.append(PATH_INSTALL) from androguard.core.bytecodes import apk import collections - TEST_APP_NAME = "TestsAndroguardApplication" TEST_ICONS = { 120: "res/drawable-ldpi/icon.png", diff --git a/tests/test_axml.py b/tests/test_axml.py index 51c1a072..70fc5c14 100755 --- a/tests/test_axml.py +++ b/tests/test_axml.py @@ -1,6 +1,7 @@ import unittest import sys + PATH_INSTALL = "./" sys.path.append(PATH_INSTALL) @@ -8,7 +9,6 @@ from androguard.core.bytecodes import apk class AXMLTest(unittest.TestCase): - def testAXML(self): filenames = [ "examples/axml/AndroidManifest-Chinese.xml", diff --git a/tests/test_dex.py b/tests/test_dex.py index 31ede0a6..9e66c227 100755 --- a/tests/test_dex.py +++ b/tests/test_dex.py @@ -1,6 +1,7 @@ import unittest import sys + PATH_INSTALL = "./" sys.path.append(PATH_INSTALL) @@ -8,7 +9,6 @@ from androguard.core.bytecodes import dvm class DexTest(unittest.TestCase): - def testDex(self): with open("examples/android/TestsAndroguard/bin/classes.dex", "rb") as fd: @@ -32,7 +32,6 @@ class DexTest(unittest.TestCase): class InstructionTest(unittest.TestCase): - def testNOP(self): instruction = dvm.Instruction10x(None, bytearray(b"\x00\x00")) self.assertEqual(instruction.get_name(), "nop") diff --git a/tests/test_session.py b/tests/test_session.py index 7386c82d..bff449bb 100644 --- a/tests/test_session.py +++ b/tests/test_session.py @@ -1,6 +1,7 @@ import unittest import sys + PATH_INSTALL = "./" sys.path.append(PATH_INSTALL) @@ -8,7 +9,6 @@ from androguard import session class SessionTest(unittest.TestCase): - def testSessionDex(self): s = session.Session() with open("examples/android/TestsAndroguard/bin/classes.dex",